与えられた:レコードには40列があります。 35番目の列を、35番目の列の内容と「$」記号で置き換えられるように、35番目の列を置き換えたいと思います。頭に浮かんだのは次のようなものです。
awk '{print $1" "$2" "...$35"$ "$36...$40}'
機能しますが、列の数が10kと大きい場合は実行できないためです。これを行うためのより良い方法が必要です。
あなたはこのようにすることができます:
awk '$35=$35"$"'
これを行うには、おそらくもっと効率的な方法があります。その警告で:
awk '{$35 = $35"$"; print}' infile > outfile
元のフィールドセパレーターを予約するために、これを行いました。空白にしたかったカラムは$ 12でした。
awk -F"\t" '{OFS=FS}{ $12="" ; print }' infile.txt > outfile.txt
gawk -i
を使用すると、ファイルがあれば編集できます。
フィールド区切り文字が<space>
:
sed 's/ */$&/35'
「承認された」回答を使用して問題があった場合、ファイルの最初の列だけではなく、それが置き換えられます。私はこの一般的なコマンドを使用します:
awk '$[column]="[replace]"' FS=, OFS=, inputfile > outputfile
どこ:
[column]
=変更する列は1から始まります(0ではありません)[replace]
=置き換えるテキスト