1

1 番目のファイルの内容:

fruit bags    
nice things  
string guitar

2 番目のファイルの内容

bagsfruit  
nicefruit  
guitarstring  
simplethings  
stringguitar

2番目のファイルの最初のファイルの内容を1行ずつ検索し、最初のファイルの両方の単語を任意の順序で含む2番目のファイルの行のみを出力するawkプログラムを作成するにはどうすればよいですか..

したがって、スクリプトの結果は次のようになります。

bagsfruit  
guitarstring  <--any order  
stringguitar  <--any order

しかし、これらのいずれでもない:

nicefruit  
simplethings

ありがとう!

4

1 に答える 1

1

これは機能します:

$ awk 'NR == FNR{a[$2$1];next} ($1 in a)' first_file second_file
bagsfruit  
guitarstring  

コードはIdiomatic awkの例に基づいています。

基本的に、first_file をループし、インデックスとして(つまり、 ) を使用して配列a[]を作成します。次に、どのsecond_file が配列内にあるかをチェックし、それらを出力します。fi[eld2 field1]$2$1field1a[]


アップデート

$ awk 'NR == FNR{a[$2$1];a[$1$2];next} ($1 in a)' first_file seconf_file
bagsfruit  
guitarstring  
stringguitar

毎回 2 つの配列インデックスを作成してみましょ[$1$2][$2$1]

于 2013-05-30T00:03:35.933 に答える