0

Linux を使用する場合: *.txt ファイル

ファイル1

HOUSAM000001189870 1012212222011212100020102102112011002200111112012220110 ....... 
HOUSAM000001213135 2012012000120120102010201002102111200122201100222201102 .......
HOUSAM000001237057 0012011222010210120120122210000101112000222210102010201 .......
HOUSAM000001239242 2210120111010010100100022001111000010220010102010201022 .......

ファイル2

HOUSAM000001189870     
HOUSAM000001237057

出力ファイル

HOUSAM000001189870 1012212222011212100020102102112011002200111112012220110 .......
HOUSAM000001237057 0012011222010210120120122210000101112000222210102010201 .......
4

4 に答える 4

1

コマンドを:joinと組み合わせて使用​​します。sort

$ join <(sort 1.txt) <(sort 2.txt)
4046 200344
4047 200122
4050 200001
于 2012-10-21T01:30:27.123 に答える
1

もう1つのオプション:

sed 's/^/^/;s/$/[[:space:]]' file2 | grep -f - file1 > file3
于 2012-10-21T01:35:12.440 に答える
1
grep -F -f file2 file1 > file3

最初の列のみを照合する必要があり、パターン ファイルを変更できる場合は、各行の先頭に ^ を追加して、そのファイルを正規表現として扱うことができます (最初の -F を削除します)。そう...

ファイル2:

^4046
^4050
^4047

それで:

grep -f file2 file1 > file3

パターン ファイルを変更できない場合、またはパターン ファイルが制御外で生成された場合は、Serge の回答が最適です。

于 2012-10-21T01:28:21.970 に答える
0

使用する1つの方法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 .......
于 2012-10-21T01:28:47.173 に答える