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的文档:

$: 此地址匹配输入的最后一个文件的最后一行,或指定-ior-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 回答