sed 不替换某些空格
Posted
技术标签:
【中文标题】sed 不替换某些空格【英文标题】:sed not replacing some spaces 【发布时间】:2015-01-05 19:49:26 【问题描述】:我无法让 SED 正常工作。
输入文件:
$ cat txt
# nasty comment
blah blah blah this line is invalid
; this also isn't right
foo = 23 # comment here
blah=76876.8768 -- fubar
yoyo=76
tab_moo = -45.99
// comment
fubar = baz
#dfgpo=sf
####
现在我如何解析它:
$ cat txt | sed -r 's/(#|--|;|\/\/).*//' | grep '=' | sed -r 's/[[:blank:]]+//'
foo= 23
blah=76876.8768
yoyo=76
tab_moo = -45.99
fubar= baz
目标是删除所有 cmets 和所有内联空格。
我不明白为什么输出中会留下一些空格。我做错了什么?
【问题讨论】:
次要注意,-r
是 GNU 主义。如果您将其更改为 -E
,它将适用于sed
的 GNU 和非 GNU 版本(例如 BSD、Mac 等)
【参考方案1】:
在sed
中,s///
仅替换任何给定行上的第一个匹配项。最后需要加/g
:
sed -r 's/[[:blank:]]+//g'
【讨论】:
以上是关于sed 不替换某些空格的主要内容,如果未能解决你的问题,请参考以下文章