用于从区域中删除空格的SED脚本

时间:2012-03-07 19:00:07

标签: bash sed

我有一个包含大量字符串的文件,如下所示:

new Tab("Hello World")

我希望将这些特定的行转换为:

new Tab("helloWorld")

这是否可以使用SED,如果可以,我该如何做到这一点?我想我必须使用分组和区域,但我无法弄清楚替换字符串。

这是我到目前为止所拥有的

sed -n 's/new Tab("\(.*\)"/new Tab("\1")'

3 个答案:

答案 0 :(得分:4)

这个解决方案并不完美:它假设该行只包含new Tab("some string blah blah blah")而该行上没有任何其他内容。这是我的* remove_space.sed:*

/new Tab/ {
    s/ *//g 
    s/newTab/new Tab/
}

要调用:

sed -f remove_space.sed data.txt

第一个替换盲目地删除所有空格,第二个替换放回 new tab 之间的空格。

您不必将其放在文件中,脚本也可以在命令行上运行:

sed '/new Tab/s/ *//g;s/newTab/new Tab/' data.txt

答案 1 :(得分:2)

我不是一个sed大师,但这里有一块Perl:

perl -pe 's/(?<=new Tab\(")[^"]+/ lcfirst(join("", split(" ", $&))) /e'

答案 2 :(得分:0)

我的第一个想法是使用awk,但我想出了一些我不喜欢的东西:

echo "new Tab(\"Hello World\")" | gawk 'match($0, /new Tab\("(.*)"\)/, r) {print r[1]}' | sed -e 's/ *//g'