我有一个包含大量字符串的文件,如下所示:
new Tab("Hello World")
我希望将这些特定的行转换为:
new Tab("helloWorld")
这是否可以使用SED,如果可以,我该如何做到这一点?我想我必须使用分组和区域,但我无法弄清楚替换字符串。
这是我到目前为止所拥有的
sed -n 's/new Tab("\(.*\)"/new Tab("\1")'
答案 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'