2012-09-12 259 views
4

如何從文件的最後一行中刪除逗號? 以下是文件:從最後一行中刪除逗號

# 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"} 

回答

16
$ 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選項時,每個文件的最後一行。

+0

注意適用於Mac和Unix用戶:這也適用於BSD sed的。 – ssc

4

這應該工作:

sed '$ s/,$//g' input_file 
  • 第一$選擇的最後一行。

您可以添加-ised將更改應用到您的input_file

0

awk的答案是比sed的肯定更詳細:

awk 'NR>1 {print prev} {prev=$0} END {sub(/,$/,"", prev); print prev}' file