使用Linux:* .txt文件
文件1
HOUSAM000001189870 1012212222011212100020102102112011002200111112012220110 .......
HOUSAM000001213135 2012012000120120102010201002102111200122201100222201102 .......
HOUSAM000001237057 0012011222010210120120122210000101112000222210102010201 .......
HOUSAM000001239242 2210120111010010100100022001111000010220010102010201022 .......
file2的
HOUSAM000001189870
HOUSAM000001237057
输出文件
HOUSAM000001189870 1012212222011212100020102102112011002200111112012220110 .......
HOUSAM000001237057 0012011222010210120120122210000101112000222210102010201 .......
答案 0 :(得分:1)
grep -F -f file2 file1 > file3
如果您只需要匹配第一列,并且可以更改模式文件,则可以将^添加到每行的前面,并将该文件视为正则表达式(删除第一个-F)。所以......
file2的:
^4046
^4050
^4047
然后:
grep -f file2 file1 > file3
如果你无法改变模式文件或者它是在你的控制之外生成的那么那么Serge的答案是最好的。
答案 1 :(得分:1)
将join
命令与sort
:
$ join <(sort 1.txt) <(sort 2.txt)
4046 200344
4047 200122
4050 200001
答案 2 :(得分:1)
还有一个选择:
sed 's/^/^/;s/$/[[:space:]]' file2 | grep -f - file1 > file3
答案 3 :(得分:0)
使用awk
的一种方式:
awk 'FNR==NR { array[$1]=$2; next } $1 in array { print $1, array[$1] }' file1.txt file2.txt
结果:
4046 200344
4050 200001
4047 200122
编辑:使用真实数据:
awk 'FNR==NR { array[$1]=$0; next } $1 in array { print array[$1] }' file1.txt file2.txt
结果:
HOUSAM000001189870 1012212222011212100020102102112011002200111112012220110 .......
HOUSAM000001237057 0012011222010210120120122210000101112000222210102010201 .......