両方のファイルを比較し、一致する場合は入力を修正します。

両方のファイルを比較し、一致する場合は入力を修正します。

file1と比較したいですfile2

file1パス名セットとfile2単語セットを含みます。

パス名に2番目のファイルの単語が含まれている場合は、行の前に追加する必要があります//

file1:

xxx/AAA.tmp.v
xxx/BBB.tmp.v
xxx/CCC.tmp.v

file2:

BBB
CCC
FFF

新しいファイルから希望の出力:

xxx/AAA.tmp.v
// xxx/BBB.tmp.v
// xxx/CCC.tmp.v

ベストアンサー1

あなたが使用できるawk

awk -F"[/.]" 'NR==FNR{seen[$0];next} 
    ($2 in seen){print "// "$0; next}1
' file2 file1
  • -F"[/.]"フィールド区切り文字をスラッシュ/または点として定義します.
  • NR==FNRこれは、最初の入力データ(ここではfile2)に常に適用されます。エココード窒素数量==Fエリーエココード窒素数字。
  • seen[$0];next上記がtrueの場合、file2の行全体を配列という名前で保存し、seen次の行を読みます。next(実際には最初の行に移動してまでこのブロックを再実行しますNR!=FNR。)
  • ($2 in seen){print "// "$0; next}1これは2番目の入力ファイル(ここではfile1)でのみ機能し、配列にseenfile1$2の列#2と同じ文字列が含まれていることを確認し、事前に追加されたfile1の行全体を印刷し、一致する//までnext条件を再確認します。それ以外の場合は、次を印刷します。条件を含む行全体1(これはアクティブ化awkのデフォルト動作です)。

おすすめ記事