在 shell 脚本中查找
Lookup in shell script
我有两个文件如下:
cat file_1:
12 a
34 b
24 c
18 d
cat file_2:
x a
y c
z d
我想要 shell 脚本中的内容:
x a 12
y c 24
z d 18
文件 1 和文件 2 的行数不同,由于我无法对文件进行排序,因此连接无法正常工作(如果我再次对连接进行排序,文件已经根据要求进行了排序,则不会满足要求)。
@Maulik Patel:也试试。
awk 'FNR==NR{A[]=[=10=];next} ( in A){print A[] FS }' Input_file2 Input_file1
非常简短的描述:
所以在这里我使用 FNR==NR 条件,当 Input_file 被读取并将 $0(当前行的值)保存到索引为字段 2.
的数组 A 时,该条件将为 TRUE
然后在读取第 2 个 Input_file 时,我正在检查 Input_file2 的第二个字段进入数组 A 并使用 Input_file1 的第一个字段打印它的值。
这是另一种方法
join -1 2 -2 2 file_2 file_1 --nocheck-order -o 1.1,1.2,2.1
x a 12
y c 24
z d 18
我有两个文件如下:
cat file_1:
12 a
34 b
24 c
18 d
cat file_2:
x a
y c
z d
我想要 shell 脚本中的内容:
x a 12
y c 24
z d 18
文件 1 和文件 2 的行数不同,由于我无法对文件进行排序,因此连接无法正常工作(如果我再次对连接进行排序,文件已经根据要求进行了排序,则不会满足要求)。
@Maulik Patel:也试试。
awk 'FNR==NR{A[]=[=10=];next} ( in A){print A[] FS }' Input_file2 Input_file1
非常简短的描述: 所以在这里我使用 FNR==NR 条件,当 Input_file 被读取并将 $0(当前行的值)保存到索引为字段 2.
的数组 A 时,该条件将为 TRUE然后在读取第 2 个 Input_file 时,我正在检查 Input_file2 的第二个字段进入数组 A 并使用 Input_file1 的第一个字段打印它的值。
这是另一种方法
join -1 2 -2 2 file_2 file_1 --nocheck-order -o 1.1,1.2,2.1
x a 12
y c 24
z d 18