ファイルの特定の内容を削除するLinuxシェルスクリプト

ファイルの特定の内容を削除するLinuxシェルスクリプト

次の形式のabc.csvというファイルがあります。

aa,size:12
bb,size:13
cc,size:3

size:を削除したいです。ファイルは次のようになります。

aa,12
bb,13
cc,3

誰もがこれを行うためにシェルスクリプトを使用する方法を教えてもらえますか?

答え1

これを簡単に使用できますsed

sed -i -- 's/size://' abc.csv

s/size://size:で置き換えられる単純な正規表現です<blank>

答え2

-i以下は、sedバージョンがこのフラグをサポートしていないUnixユーザー(SolarisやsedデフォルトでBSDに付属のOS Xなど)に便利な代替コマンドです。

sed 's/size://' abc.csv > tmpfile; mv tmpfile abc.csv

g特定の例では、「size:」は1行に複数回表示されないため、sedコマンドの最後にあるオプションは必要ありません。

編集する: 小さいファイルの場合は、不要な一時ファイルの生成を防ぐために、更新されたコンテンツを変数に保存することもできます。

new="$(sed 's/size://' abc.csv)"; echo "$new" > abc.csv

この方法も能力を許可する"$new"元のファイルを上書きする前に、健全性チェックのために変数(更新されたファイル)をSTDOUTにエコーします。

関連情報