私は持っていますファイル1.txt次のようになります。
search
http://google.com
mail
https://gmail.com
ファイル2.txt次のようになります。
This is a search tool
This is your mail account
このようにマージする必要がありますファイル1.txt次のようになります。
This is a search tool
http://google.com
This is your mail account
https://gmail.com
答え1
また試み
awk '
NR == FNR {T[$0]
next
}
{for (t in T) if (t ~ $1) $1 = t
}
1
' file2 file1
This is a search tool
http://google.com
This is your mail account
https://gmail.com
答え2
使用awk
:
awk 'NR==FNR{ (NR%2? keyword=$0: seen[keyword]=$0 ); next}
{ for (keys in seen)if ($0 ~ keys) {print $0, seen[keys] }
}' OFS='\n' file1 file2
出力は次のとおりです
This is a search tool
http://google.com
This is your mail account
https://gmail.com
説明する:
最初のファイルNR==FNR
で、レコード/行番号が行NR%2
全体$0
をelseという変数に格納する場合は、その行を見つけたキーをindexとして使用して名前付き連想配列に追加し、keyword
その行を読み込みます。seen
next
...最初のファイルが続く場合は、for-loop
配列を繰り返します。ボン変数はkeys
配列のインデックス要素を指すために使用され、要素がkeys
その行で一致できることを確認し、file2
そのprint $0
キー値をseen[keys]
ewlineで区切ります\n
。