给定一个文件1:
13 a b c d
5 f a c d
7 d c g a
14 a v s d
和file2:
7 x
5 c
14 a
13 i
我想考虑file2中第一列的相同顺序对file1进行排序,因此输出应为:
7 d c g a
5 f a c d
14 a v s d
13 a b c d
是否可以在bash中执行此操作,还是应该使用某些"更高的"语言如python?
答案 0 :(得分:7)
使用awk
将file2
中的行号作为file1
前面的额外列。按该列对结果进行排序。然后删除该前缀列
awk 'FNR == NR { lineno[$1] = NR; next}
{print lineno[$1], $0;}' file2 file1 | sort -k 1,1n | cut -d' ' -f2-
答案 1 :(得分:0)
简单的解决方案
for S in $(cat file2 | awk '{print $1}'); do grep $S file1; done