【问题标题】:sed not replacing some spacessed 不替换某些空格
【发布时间】: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 等)

标签: regex bash sed


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2018-05-24
    • 2014-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多