8

ファイルの最後の行からコンマを削除するにはどうすればよいですか? ファイルは次のとおりです。

# cat ox_data_archive_r_20120727.json
{"name": "secondary_ua","type":"STRING"},
{"name": "request_ip","type":"STRING"},
{"name": "cb","type":"STRING"},

以下は、3 行すべてからカンマを削除します。

# sed 's/,$/\ /' ox_data_archive_r_20120727.json
{"name": "secondary_ua","type":"STRING"}
{"name": "request_ip","type":"STRING"}
{"name": "cb","type":"STRING"}

最後のコンマだけを削除する必要があります。したがって、出力は次のようになります...

# cat newfile.json
{"name": "secondary_ua","type":"STRING"},
{"name": "request_ip","type":"STRING"},
{"name": "cb","type":"STRING"}
4

3 に答える 3

28
$ cat input.txt
{"name": "secondary_ua","type":"STRING"},
{"name": "request_ip","type":"STRING"},
{"name": "cb","type":"STRING"},
$ sed '$s/,$//' < input.txt
{"name": "secondary_ua","type":"STRING"},
{"name": "request_ip","type":"STRING"},
{"name": "cb","type":"STRING"}

GNU sedのドキュメントから:

$-i: このアドレスは、入力の最後のファイルの最後の行、または または-sオプションが指定されている場合は各ファイルの最後の行に一致します。

于 2012-09-12T14:14:54.120 に答える
7

これはうまくいくはずです:

sed '$ s/,$//g' input_file
  • 最初$の行は最後の行を選択します。

に変更を追加-iしてsed適用することができますinput_file

于 2012-09-12T14:14:58.500 に答える
0

awk の答えは、確かに sed よりも冗長です。

awk 'NR>1 {print prev} {prev=$0} END {sub(/,$/,"", prev); print prev}' file
于 2012-09-12T17:28:10.630 に答える