Unixファイルシステムで特定の数字を置き換えるコマンドを作成したいと思います。たとえば、次のようになります。
ZAR ZEC ZDA
-9 2 3
4 8 -9
5 6 7
私のタイトルはZAR
、です ZEC
。ZDA
-9をZDA
+9に置き換える必要があります。。ZAR
フィールド内の他の値(「-9」など)以外の数値を変更するには、どのコマンドを作成する必要がありますか?
答え1
-9
ファイルの3番目の列に表示される内容を次に変更するには、次の手順を実行します+9
。
$ awk '$3==-9 {$3="+9"} 1' OFS='\t' file
ZAR ZEC ZDA
-9 2 3
4 8 +9
5 6 7
$3==-9
3番目の列で行を選択します-9
。これらの行の場合、割り当ては$3="+9"
列をに変更します+9
。これは1
print-the-lineのawkの神秘的な速記です。最後に、OFS='\t'
タブ文字をフィールド区切り文字として使用して出力を印刷するように awk に指示します。
場所でファイルを変更する
GNU awkを使用する(Linux):
awk -i inplace '$3==-9 {$3="+9"} 1' OFS='\t' file
BSD/OSX awkの使用:
awk '$3==-9 {$3="+9"} 1' OFS='\t' file >tmp && mv tmp file
答え2
$ cat file
ZAR ZEC ZDA
-9 2 3
4 8 -9
5 6 7
このZDA
列が最後のフィールドなので
$ sed 's/-9$/+9/' file
ZAR ZEC ZDA
-9 2 3
4 8 +9
5 6 7
-i
GNUバージョン(または-i.bak
OSX / BSD)の場合、入力ファイル自体を変更するには
sed -i 's/-9$/+9/' file