我的文件有温度值:
$ cat temperature.txt
[1450746005000,18.00],[1450746365000,18.00],[1450746725000,17.94],[1450747085000,17.94],[1450747445000,17.94],[1450747805000,17.94],[1450748165000,17.94],[1450748525000,17.88],[1450748885000,17.88],[1450749245000,17.88],[1450749606000,17.88],
有时我的电台会保存错误的值,例如:(第二个值)
[1453634645000,19.06],[1453635364000,[1453658405000,19.13],
我想只删除错误的值并覆盖此文件。 在这种情况下它[1453635364000,
我发现了如何搜索" good"值。但我不知道如何删除错误的内容。
sed 's/\[[^]]*,?\],*//g' temperature.txt > temperature.txt.proper
rm temperature.txt && mv temperature.txt.proper temperature.txt
答案 0 :(得分:2)
试试这个:
sed 's/[[0-9]\+,\[/[/g;s/[[0-9]\+,$//g' file
要“就地”修改文件,请添加sed的选项-i
。
答案 1 :(得分:1)
这可能适合你(GNU sed):
sed -r ':a;s/\[[0-9]+,($|\[)/\1/;ta' file
这会删除数字后跟,
后跟[
。当这种模式中的两个或多个相邻时,全局替换是不够的,模式匹配必须再次开始,因此循环。