标签: join

根据第一个文件第一列的所有值合并2个文件

我需要合并以下 2 个文件:

  • 文件1

表格 REF-IO HEAD-IO DIFF-IO
测试 200 500 -300
考试 2 3 -1
期末考试2 1 1
邮件 4 2 2
总计 208 506 -298

  • 文件2

表格 REF-SELECT HEAD-SELECT DIFF-SELECT
test 5 7 -2
game 3 3 0
Exam 0 7 -7
final 12 6 6
TOTAL 20 23 -3

合并后的文件应如下所示:

表 REF-IO HEAD-IO DIFF-IO REF-SELECT HEAD-SELECT DIFF-SELECT
测试 200 500 -300 5 7 -2
考试 2 3 -1 0 7 -7
最终 2 1 1 …

awk files merge join

5
推荐指数
1
解决办法
6141
查看次数

按第一列合并csv文件

我有 3 个这样的 csv 文件。

CSV 1:

1,aaaa,bbb,2014-04-01
2,qwe,rty,2014-04-03
3,zxc,cvb,2014-04-05
Run Code Online (Sandbox Code Playgroud)

CSV 2:

2,j,k,2014-04-01
3,a,s,2014-04-04
5,g,h,2014-04-08
Run Code Online (Sandbox Code Playgroud)

CSV 3:

2,a,s,d,f,g,2014-04-01
3,d,f,g,h,j,2014-04-06
4,c,v,b,n,m,2014-04-09
Run Code Online (Sandbox Code Playgroud)

如何按第一列合并所有内容?

SELECT * FROM csv1
JOIN csv2 where csv1[0]= csv2[0] --[0] is the position of the first column
Run Code Online (Sandbox Code Playgroud)

输出应该是:

 csv1 fields     | csv2 fields |  csv4 fields

 2,qwe,rty,2014-04-03,a,s,2014-04-04,a,s,d,f,g,2014-04-01
 3,zxc,cvb,2014-04-05,g,h,2014-04-08,d,f,g,h,j,2014-04-06  
Run Code Online (Sandbox Code Playgroud)

awk text-processing csv columns join

5
推荐指数
1
解决办法
4866
查看次数

根据数字字段合并/组合 2 个文本文件

我有 2 个文本文件

文件_1:

14595|Age 35|Salary xx|Position ax|2013|Info 1|Info 2|Info 3|Info 4|Info 5
14649|Age 30|Salary xx|Position az|2015|Info 1|Info 2|Info 3|Info 4|Info 5
Run Code Online (Sandbox Code Playgroud)

文件_2:

14595|Address xx|Info 6|Info 7|Info 8
14649|Address xxxz|Info 6|Info 7|Info 8
Run Code Online (Sandbox Code Playgroud)

我想要一种方法来查找 file_1 第一列(数字列)并在 file_2 中找到它的匹配项,并将两个文件的信息合并到 file_3 中,而没有数字键字段,所以输出就像

文件_3

Age 35|Salary xx|Position ax|2013|Info 1|Info 2|Info 3|Info 4|Info 5|Address xx|Info 6|Info 7|Info 8
Age 30|Salary xx|Position az|2015|Info 1|Info 2|Info 3|Info 4|Info 5|Address xxxz|Info 6|Info 7|Info 8
Run Code Online (Sandbox Code Playgroud)

awk text-processing columns join

5
推荐指数
1
解决办法
184
查看次数

awk:比较两个文件

我有一个 file1.txt

USA Joe 123.123.123
Russia Marry 458.786.892
Canada Greg 151.844.165
Latvia Grace 125.895.688
Run Code Online (Sandbox Code Playgroud)

和 file2.txt

1 123.123.123
2 151.844.165
3 465.879.515
Run Code Online (Sandbox Code Playgroud)

我想创建一个新文件result.txt,在那里我只打印那些地址 (xxx.xxx.xxx) 都在 file1 和 file2 中的行,所以我的结果应该是

USA Joe 123.123.123
Canada Greg 151.844.165
Run Code Online (Sandbox Code Playgroud)

我需要使用 awk,但是我需要如何将它用于两个文件?

awk text-processing join

5
推荐指数
1
解决办法
448
查看次数

如何找出两个文件之间的共同元素?

例如,我有 2 个文件具有以下信息:

文件#1:

12
13
14
15
Run Code Online (Sandbox Code Playgroud)

文件#2:

12 1
13 2
14 2
15 6
16 7
17 8
Run Code Online (Sandbox Code Playgroud)

输出文件:

1
2
2
6
Run Code Online (Sandbox Code Playgroud)

在输出文件中,我只需要与文件 #1 的第一列匹配的文件 #2 的第二列值。在 Linux 中是否有任何实用功能?我是 shell 脚本的新手,有人可以帮我吗?

awk shell-script text-processing sort join

4
推荐指数
1
解决办法
5432
查看次数

Comparing files line by line in awk with delimiter

file1:

abc|123|check
def|456|map
ijk|789|globe
lmn|101112|equator
Run Code Online (Sandbox Code Playgroud)

file2:

abc|123|check
def|456|map
ijk|789|equator
lmn|101112|globe
Run Code Online (Sandbox Code Playgroud)

EXPECTED OUTPUT:

ijk|789|equator
lmn|101112|globe
Run Code Online (Sandbox Code Playgroud)

Current awk script:

awk 'BEGIN{OFS=FS="|"} NR==FNR{a[$3]=$3;next}!($3 in a)' file1 file2

This does comparison based on array content. How to compare line by line and printing only that results.

awk shell-script text-processing join

4
推荐指数
3
解决办法
5746
查看次数

合并两个文件

我有 2 个文件,内容如下:

File1.txt 
A 1
B 2
C 5
Z 3

File2.txt
A 4
B 7 
C 10
D 11
Run Code Online (Sandbox Code Playgroud)

我想做的是创建类似的东西

A 1 4 
B 2 7
C 5 10
D - 11
Z 3 -
Run Code Online (Sandbox Code Playgroud)

有没有这样做的实用程序?如果不是怎么能做到这一点?使用findawk或什么?

text-processing join

4
推荐指数
1
解决办法
274
查看次数

使用 grep/awk/sed 对 2 个文件进行排序和组合

我正在获取一个 wifi 日志,其中列出了 MAC 地址。我想了解连接到我的路由器的设备的 MAC 供应商/制造商。我有 2 个文件,其中一个 MAC 已经“grep”以显示 MAC 的前 3 个八位字节。另一个文件有一个供应商列表和他们发布的前 3 个八位字节。现在的问题是第一个文件有多个重复项,我仍然可以在第二个文件中匹配,但它不会显示第一个文件中有多少。以下是示例。

文本文件

00:10:f6
00:10:f6
03:48:03
8f:91:34
93:ab:c6
Run Code Online (Sandbox Code Playgroud)

供应商.xml

03:48:03 vendor="apple"
00:10:f6 vendor="micro"
8f:91:34 vendor="dell"
93:ab:c6 vendor="sun"
23:8b:23 vendor="acer"
00:73:ad vendor="asus"
Run Code Online (Sandbox Code Playgroud)

这是我运行以下代码时得到的结果:

cat text.txt vendor.xml |grep -Ff text.txt vendor.xml |sort -u |uniq -c >> final.txt
Run Code Online (Sandbox Code Playgroud)

最终版.txt

  1 00:10:f6 vendor="micro"
  1 03:48:03 vendor="apple"
  1 8f:91:34 vendor="dell"
  1 93:ab:c6 vendor="sun"
Run Code Online (Sandbox Code Playgroud)

结果应该是:

  2 00:10:f6 vendor="micro"
  1 03:48:03 vendor="apple"
  1 8f:91:34 vendor="dell"
  1 93:ab:c6 vendor="sun"
Run Code Online (Sandbox Code Playgroud)

有没有我没有想到的标志或选项?

grep scripting sed awk join

4
推荐指数
1
解决办法
4365
查看次数

在第 1 列上加入两个文本文件,保持第一个文件中的顺序和不成对的行

我需要合并我拥有的两个文件,但在合并它们之前我首先需要它进行匹配。这是我的第一个文件,其中包含 100 万行。

abcde
fghi
jklmn
opqrs
123456
0000
Run Code Online (Sandbox Code Playgroud)

第二个文件包含 300 万行,但仍有一些行具有第一个文件中的字符串。

543123:fdfdss
dfskld:533fg
abcde:1234
fdskls:fkdfs
gfdkls:flfds
0000:5432
fdsk:saakl
Run Code Online (Sandbox Code Playgroud)

输出:

abcde:1234
fghi
jklmn
opqrs
123456
0000:5432
Run Code Online (Sandbox Code Playgroud)

我希望输出为 file1:file2 但前提是它与 file2 的第一列和 file1 中的字符串匹配。我不想打乱排序格式,我希望它按此顺序排列,我想保留 file1 字符串但只添加匹配的字符串。

text-processing merge join

4
推荐指数
1
解决办法
833
查看次数

根据一列连接两个文件

文件 1:

a, 1    
b, 5    
c, 2    
f, 7
Run Code Online (Sandbox Code Playgroud)

文件2:

a, 2    
f, 9    
g, 3
Run Code Online (Sandbox Code Playgroud)

我想根据第 1 列加入文件 1 和文件 2 并获得文件 3,如下所示。

文件 3:

a, 1, 2    
b, 5, -    
c, 2, -    
f, 7, 9    
g, -, 3
Run Code Online (Sandbox Code Playgroud)

合并匹配值并保留每个文件中的特定值

awk merge join

4
推荐指数
1
解决办法
4705
查看次数

标签 统计

join ×10

awk ×8

text-processing ×7

merge ×3

columns ×2

shell-script ×2

csv ×1

files ×1

grep ×1

scripting ×1

sed ×1

sort ×1