特定のフィールドの特定のテキストのみを置き換えるには、nawkを使用してください。

特定のフィールドの特定のテキストのみを置き換えるには、nawkを使用してください。

私の入力データファイルabc.txtには次のものがあります。

"20131008","0004","0568","98"

このコマンドを実行してテキストを置き換えます。

nawk -F, -vOFS=',' '{gsub("0568","0808",$3); print }' abc.txt

出力では、区切り文字 "," はスペースで置き換えられます。出力は次のとおりです。

 "20131008" "0004" "0568" "98".

この問題を解決するのに役立つ人はいますか?交換してみ-vOFSましたが役に立ちませんでした。

ベストアンサー1

この回答は、awkコマンドライン出力とファイル変更の両方の例と例を示しています。sed

の場合、コマンドライン出力(または変数)で変更された文字列を使用して受信しますawk$ awk -F"," '{gsub("0568", "0808", $3)}1' input.txt、元のファイルは変更されません。

$ cat input.txt 
"20131008","0004","0568","98"
$ awk -F"," '{gsub("0568", "0808", $3)}1' input.txt
"20131008" "0004" "0808" "98"

の場合、フラグは内部変更(つまり元のファイルの変更)を表す単純なsed形式を使用します。sed -i 's/string to replace/new string/g' input.txt-i

$ cat input.txt 
"20131008","0004","0568","98"
$ sed -i 's/0568/0808/g' input.txt
$ cat input.txt 
"20131008","0004","0808","98"

リクエストされたものではありませんがnawk(私はインストールしていません)、助けてくれたことを願っています。

おすすめ記事