使用sed查找和替换字符串

时间:2011-09-30 12:05:31

标签: linux sed

我正在尝试将包含在单引号中的文档中的字符串替换为不带字符串的字符串。

'test' -> test

有没有办法使用sed我能做到这一点?

由于

3 个答案:

答案 0 :(得分:3)

这将删除任何引用词周围的单引号,并留下其他引号:

sed -E "s/'([a-zA-Z]*)'/\1/g" 

经过测试:

foo 'bar' it's 'OK' --> foo bar it's OK

请注意,它保留了it's中的引号。

说明:

搜索正则表达式'([a-zA-Z]*)'匹配由引号括起来并使用括号的任何单词(字母,无空格),它捕获内部的单词。替换正则表达式\1引用“组1” - 第一个捕获的组(即搜索模式中括号内的组 - 单词)

仅供参考,这是测试:

echo "foo 'bar' it's 'OK'" | sed -E "s/'([a-zA-Z]*)'/\1/g"

答案 1 :(得分:2)

删除特定单词的单引号(示例中的文字):

kent$  echo "foo'text'000'bar'"|sed "s/'text'/text/g"
footext000'bar'

答案 2 :(得分:1)

这个怎么样?

$> cat foo
"test"
"bar"
baz "blub"

"one" "two" three

$> cat foo | sed -e 's/\"//g'
test
bar
baz blub

one two three

<强>更新 由于您只想替换“测试”,因此更可能是:

$> cat foo | sed -e 's/\"test\"/test/g'
test
"bar"
baz "blub"

"one" "two" three