正規表現を使用したファイルの検索と置換

正規表現を使用したファイルの検索と置換

さて、私はそうだったとしましょう。ファイルA.txt以下が含まれます:

string1, 3269
asdf, 8635
ghjk, 8534
foo, 4179
bar, 23490

以下を保存できる1つまたは2つのテキストファイル(どちらも簡単なファイル)を使用したいと思います。

ファイルB.txt

string1 | 1string
bar | foo

" |"は区切り文字であり、他のファイルであるべきかどうかは重要ではありません(1stringとfooファイルC.txtこの場合)。

検索および置換する文字列を使用して検索および置換操作を実行したいと思います。ファイルB.txt(そしておそらくファイルC.txt)なので、結果は次のようになります。

1string, 3269
asdf, 8635
ghjk, 8534
foo, 4179
foo, 23490

これを行うために使用できるツールはありますか?ありがとうございます!

ベストアンサー1

Awk解決策:

awk 'NR==FNR{ a[$1]=$3; next }$1 in a{ $1=a[$1] }1' FileB.txt FS=',' OFS=',' FileA.txt
  • NR==FNR{ ... }- 最初の入力ファイルを処理しますFileB.txt。つまり:
    • a[$1]=$3- 最初のフィールドを配列インデックス/キーとして使用し、すべての3番目のフィールド値を配列$3としてキャプチャします。a$1
    • next- 次のレコードに移動
  • $1 in a- 2番目の入力ファイル(例FileA.txt:)の処理中に、最初のフィールド値が配列キーに表示$1aれることを確認します。
    • $1=a[$1]- リセット値と交換

出力:

1string,  3269
asdf, 8635
ghjk, 8534
foo, 4179
foo,  23490

おすすめ記事