我有一串字符串,看起来像这样的文件中删除空格这可能使用SED,如果是这样,我该怎么做到这一点?我想我必须使用分组和区域,但我无法弄清楚替换字符串。sed脚本从区域
这是我迄今为止
sed -n 's/new Tab("\(.*\)"/new Tab("\1")'
我有一串字符串,看起来像这样的文件中删除空格这可能使用SED,如果是这样,我该怎么做到这一点?我想我必须使用分组和区域,但我无法弄清楚替换字符串。sed脚本从区域
这是我迄今为止
sed -n 's/new Tab("\(.*\)"/new Tab("\1")'
这个方案并不完美:它假定行只包含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
第一次换人盲目地删除所有空格,第二把后面新和标签之间的空间。
你不必把这个文件,脚本命令行的作品,以及:
sed '/new Tab/s/ *//g;s/newTab/new Tab/' data.txt
还要注意,字符串的第一个字符是小写字母。 – 2012-03-07 19:38:43
非常感谢 – 2012-03-07 21:06:14
我首先想到的是用AWK但我想出了东西,我真的不喜欢:
echo "new Tab(\"Hello World\")" | gawk 'match($0, /new Tab\("(.*)"\)/, r) {print r[1]}' | sed -e 's/ *//g'
'match'(一个数组)的第三个参数是一个GNU awk扩展,所以需要'gawk'。 – 2012-03-07 19:34:41
你说得对。抱歉。纠正。 – rui 2012-03-07 19:49:49
我不够一个SED大师,但这里的一块的Perl:
perl -pe 's/(?<=new Tab\(")[^"]+/ lcfirst(join("", split(" ", $&))) /e'
sed不支持负向lookbehind,所以它可能无法在sed中使用此技术。 – Sorpigal 2012-03-07 19:31:59
我同意,特别是因为我评估替换字符串作为代码。 – 2012-03-07 19:40:41
个个都是'新选项卡(“一些文本与SPAC es“)'? – user219882 2012-03-07 19:07:08
它们可能包含也可能不包含空格,但它们将位于同一行中。 – 2012-03-07 19:10:16