删除周围号码的引号

时间:2014-12-05 16:27:09

标签: regex linux sed numbers

我的文件中的行类似于:

"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命令来完成此任务吗?

3 个答案:

答案 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