如果有人可以帮助我,我将非常感激。
我想使用grep,sed或awk(或其他)命令执行此任务。 我有两个文件。
档案1
0
1
4
文件2
S 0 1832 * 0 * * *
S 1 1801 * 0 * * *
H 1 1298 99.2 + 0 0 301M10I997M493I
S 2 1791 * 0 * * *
S 3 1720 * 0 * * *
S 4 1693 * 0 * * *
S 11 1693 * 0 * * *
我想要的输出是
S 0 1832 * 0 * * *
S 1 1801 * 0 * * *
H 1 1298 99.2 + 0 0 301M10I997M493I
S 4 1693 * 0 * * *
因此,如果file2的第二列与file1行匹配,则提取到输出。这就是我想要做的。
答案 0 :(得分:2)
这是awk中的经典解决方案:
awk 'FNR==NR{ a[$1]; next }$2 in a{ print $0 }' file1 file2
输出:
S 0 1832 * 0 * * *
S 1 1801 * 0 * * *
H 1 1298 99.2 + 0 0 301M10I997M493I
S 4 1693 * 0 * * *
命令的第一部分仅在file1上执行,因为模式FNR == NR,仅对file1为真。它使用$ 1作为数组a的索引。下一个命令检查file2的$ 2是否作为数组中的索引。 file2 $ 2所需的匹配。最后一个命令打印file2的整个匹配行。