仮定:レコードには40個の列があります。 35列を35列の内容と「$」記号に置き換えるように35列を変更したいと思います。私が思いついた内容は次のとおりです。
awk '{print $1" "$2" "...$35"$ "$36...$40}'
動作しますが、列数が10kほど大きい場合は実現できません。これを行うには、より良い方法が必要です。
答え1
次のことができます。
awk '$35=$35"$"'
答え2
これを行うより効率的な方法があるかもしれません。この警告とともに:
awk '{$35 = $35"$"; print}' infile > outfile
答え3
元のフィールド区切り記号を維持するためにこれを行いました。空にする列は$ 12です。
awk -F"\t" '{OFS=FS}{ $12="" ; print }' infile.txt > outfile.txt
可能であれば、を使用してgawk -i
ファイルをその場で編集できます。
答え4
「承認された」回答を使用すると問題が発生します。これはファイルの最初の列だけを置き換えるものではありません。私は次の一般的なコマンドを使用します。
awk '$[column]="[replace]"' FS=, OFS=, inputfile > outputfile
どこ:
[column]
=変更したい列、1から始まる(0の代わりに)[replace]
= 置き換えたいテキスト