Sed不会删除带有逗号+空格的单词

时间:2017-01-06 08:35:04

标签: bash sed

我在bash中有这部分代码,它应该删除$content中第一个单词的所有出现:

fst_word=$(echo $content | { read fst _; echo $fst; })
content=$(echo $content | sed "s/\b$fst_word\b//g")

此代码适用于没有逗号/点+空格组合的文本,但如果找到逗号/点+空格,则sed不会删除单词。我该如何解决?

UPD。

预期的行为是,如果输入word1, word2 word3 srcipt必须从word1,删除$content,但事实并非如此。如果输入是例如word1 word2 word3它有效并删除了word1

1 个答案:

答案 0 :(得分:1)

因为,和空格之间的位置不被视为单词边界。因此word1,\bword1, word2 word3

的第一部分不匹配

您的逻辑可以简单地更改为(我使用带有-r的扩展正则表达式,您可能需要或可能不需要此功能,或者可能需要其他选项来使用此功能)

content=$(echo "$content" | sed -r "s/\w+\W+//" )