技术解析

shell 如何删除 倒数第二行的逗号
0
2021-07-06 07:42:37
idczone
比如:
[
{"ip_port": "11.12.13.14:80", "user_pass": ""},
{"ip_port": "11.12.13.14:80", "user_pass": ""},
{"ip_port": "11.12.13.14:80", "user_pass": ""},
]

重新输出为
[
{"ip_port": "11.12.13.14:80", "user_pass": ""},
{"ip_port": "11.12.13.14:80", "user_pass": ""},
{"ip_port": "11.12.13.14:80", "user_pass": ""}
]
提供一个渣实现:
```
sed "$((`cat 1.txt|wc|awk '{print $1}'`-1))"s/', *$'// 1.txt
```
楼下继续

[email&cat test.txt
[
{"ip_port": "11.12.13.14:80", "user_pass": ""},
{"ip_port": "11.12.13.14:80", "user_pass": ""},
{"ip_port": "11.12.13.14:80", "user_pass": ""}
]
[email&cat test.txt|sed 's/},\s]/}\n]/'
[
{"ip_port": "11.12.13.14:80", "user_pass": ""},
{"ip_port": "11.12.13.14:80", "user_pass": ""},
{"ip_port": "11.12.13.14:80", "user_pass": ""}
]
[email protected]:~$

tac|sed '2s/},/}/g' aaa.txt|tac > aaa.txt

哈哈哈原来还能这样……

gsed -n 'x;1d;$!p;${s*$游戏最好玩了,不过我这个感觉太冗长了,不知道有没有高手可以给个精炼点的

额。笔误写反了 tac aaa.txt|sed '2s/},/}/g' |tac 这样就好了

sed $[$(wc -l file)-1]'s/,//g'

更正: sed $[$(wc -l < file)-2]'s/,//' file

echo 'Gk$xZZ' > /tmp/$$ && vim -s /tmp/$$ input.file

#TIL

为什么要用 shell 处理一个 json ,况且 json 最后一个逗号是可有可无的?

目标是原来有一个 IP 列表 1.1.1.1:80 ,用 curl 测试可用性,把可用的保存为一个 json 样式
非可有可用 用 python 的 json.loads 有最后一个逗号会报错

可能我给记混了, perl 里的 array/hash 的最后一个元素后的逗号是可有可无的, json 的好像没有最后一个逗号的。

你这个好厉害,看了半天 man page 终于弄明白原理。

https://gist.github.com/Arthur2e5/58717a25f931715d3203

数据地带为您的网站提供全球顶级IDC资源