使用grep |查找并替换带引号的字符串SED

时间:2017-03-26 17:09:13

标签: bash sed grep pipeline find-replace

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

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

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

我一直在找一个发现&打印引用的字符串:

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中从管道获取结果的正确方法?

1 个答案:

答案 0 :(得分: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'