我的文件中的行类似于:
"somestring": "20.000",
我想删除20.000左右的引号。
其他用例
"somestring": "20",
"somestring": "blahhhah 3",
"somestring": "",
应该给出
"somestring": 20,
"somestring": "blahhhah 3",
"somestring": "",
识别数字的明显正则表达式是[0-9]+
和[0-9].[0-9]+
的小数。
我被告知这可以使用sed命令,因为它可以反向引用,但是我不知道如何使用sed命令。
有人可以提供任何linux命令来完成此任务吗?
答案 0 :(得分:2)
$ sed -r 's@"([0-9]+(\.[0-9]+)?)",\s*$@\1,@' file
"somestring": 20.000,
"somestring": 20,
"somestring": "blahhhah 3",
"somestring": "",
答案 1 :(得分:1)
您可以使用:
sed -i.bak -r 's/"([[:digit:]]+(\.[[:digit:]]+){0,1})"/\1/' file
"somestring": 20,
"somestring": "blahhhah 3",
"somestring": "",
"somestring": 20.000,
在OSX上使用:
sed -E 's/"([[:digit:]]+(\.[[:digit:]]+){0,1})"/\1/'
答案 2 :(得分:0)
在基本模式下:
sed 's/^\("[^"]*": \)"\([0-9][0-9]*\(\.[0-9]*\)\?\)"/\1\2/' file.txt