0

我需要在文本文件中删除所有引号,这些引号始终以相同的开头,但以不同的方式结束:

'something.with.quotation.123' must be something.with.quotation.123
'something.with.quotation.456' must be something.with.quotation.456

但不应更改不以此开头的引号字符串。

我一直在使用 grep 来查找并打印带引号的字符串:

grep -o "something\.with\.quotation\.[^']*" file.txt

现在我需要通过管道将结果传递给 sed,但它不起作用:

grep -o "something\.with\.quotation\.[^']*" file.txt | sed -i "s/'$'/$/g" file.txt

我一直在尝试其他选项("s/\'$\'/$/g", "s/'\\$'/\\$/g",...)并在谷歌上搜索了很多,但没有办法。

您能否指出从 sed 管道中获取结果的正确方法?

4

1 回答 1

2

你不需要grep这里。像这样使用sed

cat file
'something.with.quotation.123'
'something.with.quotation.456'
'foo bar'

sed -E "s/'(something\.with\.quotation\.[^']*)'/\1/g" file
something.with.quotation.123
something.with.quotation.456
'foo bar'
于 2017-03-26T17:14:46.903 回答