こんにちは、gsubを使用して括弧で囲まれた単語を置き換えるにはどうすればよいですか。
こちらABC(T)をABC / Gに置き換えたい
awk " {gsub("ABC\(T\)","ABC/G")}; Print $0" "$FILENAME" > tmp.tmp && mv tmp.tmp "$FILENAME"
回答
gsub
に//
形式を使用すると、全体を簡略化できます。
$ echo "ABC(T)" | awk "{gsub(/ABC\(T\)/,"ABC/G")}; print $0" ABC/G
次に、print
を引数なしで使用する(print $0
と同じ)か、または印刷の1
省略形(1;
<など、trueと評価される式のデフォルトのawk
アクション/ div>は現在の行を出力します):
$ echo "ABC(T)" | awk "{gsub(/ABC\(T\)/,"ABC/G")}1" ABC/G
ただし、個人的にはawk
このため、構文は他のツールを使用すると短くてすっきりします:
$ echo "ABC(T)" | sed "s|ABC(T)|ABC/G|" ABC/G $ echo "ABC(T)" | perl -pe "s|ABC\(T\)|ABC/G|" ABC/G
回答
あなたはとても親密でした。 2つの\
が必要でした。これは、セットの1つがBASHを通過するテキスト自体用であり、もう1つがawkによって解析されている実際の\
であるためです。これは私にとってはうまくいくようです:
echo "ABC(T)" | awk " {gsub("ABC\\(T\\)","ABC/G")}; Print $0" "$FILENAME"
そして与えるもの:
ABC/G