我在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
。
答案 0 :(得分:1)
因为,
和空格之间的位置不被视为单词边界。因此word1,\b
与word1, word2 word3
您的逻辑可以简单地更改为(我使用带有-r
的扩展正则表达式,您可能需要或可能不需要此功能,或者可能需要其他选项来使用此功能)
content=$(echo "$content" | sed -r "s/\w+\W+//" )