ファイルの行を書き換える方法は? [コピー]

ファイルの行を書き換える方法は? [コピー]

csvファイルに必要なデータに合わない複数の行があります。たとえば、次はexample.csvファイルです。

14/Feb/2016:13:21:33-0500,mk
15/Feb/2016:14:21:33-0500,mk
16/Feb/2016:15:21:33-0500]http://map1.link.de/mk
17/Feb/2016:16:21:33-0500]http://map5.link.de/mk

以下を使用して行を取得および変更できます。

$ cat example.csv | grep "map" | sed 's/\(.*\)].*\/\(.*$\)/\1,\2/'

結果:

16/Feb/2016:15:21:33-0500,mk
17/Feb/2016:16:21:33-0500,mk

しかし、私が本当に欲しいのは、それを修正して同じファイルに保存することです。どうすればいいですか?

ベストアンサー1

GNU Sedを使用している場合は、以下を実行してください。

sed -i '/map/s/\(.*\)].*\/\(.*$\)/\1,\2/' example.csv

警告する:これにより、ファイルの内容が上書きされます。正規表現が正しいかどうかわからない場合は、まずコピーを作成してください。正確にあなたは何が欲しいですか?


もしあなたならいいえGNU Sedがあるか、すべてのPOSIXシステムで実行できるより移植性の高いソリューションが必要です。使用ex:

ファイルを編集せずにテストを実行するには:

printf '%s\n' 'g/map/s/\].*\/\([^/]*\)$/,\1/' %p | ex example.csv

結果が満足な場合は、変更を保存してください。

printf '%s\n' 'g/map/s/\].*\/\([^/]*\)$/,\1/' x | ex example.csv

おすすめ記事