不取代某些空间

时间:2014-11-09 12:15:02

标签: regex bash sed

我在让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

目标是删除所有注释和所有内联空格。

我不明白为什么输出中会留下一些空格。我做错了什么?

1 个答案:

答案 0 :(得分:2)

sed中,s///仅替换任何给定行上的第一个匹配项。您需要在最后添加/g

sed -r 's/[[:blank:]]+//g'