所以我有一个bash脚本,除了sed。
的一个问题外,它的工作正常full=$(echo $full | sed -e 's/\b'$first'\b/ /' -e 's/ / /g')
除非有一些变量$ first紧跟一个句点而不是一个空格,否则这会很有效。在这些情况下,我不希望删除变量。
示例:
full="apple.orange orange.banana apple.banana banana";first="banana"
full=$(echo $full | sed -e 's/\b'$first'\b/ /' -e 's/ / /g')
echo $first $full;
我想只删除整个单词banana,而不是对orange.banana或apple.banana进行任何更改,那么我怎样才能让sed忽略点作为分隔符?
答案 0 :(得分:2)
你想要" banana"以字符串开头或空格开头,后跟空格或字符串结尾
$ sed -r 's/(^|[[:blank:]])'"$first"'([[:blank:]]|$)/ /g' <<< "$full"
apple.orange orange.banana apple.banana
注意使用-r
选项(对于bsd sed,使用-E
)启用扩展正则表达式 - 允许我们省略大量反斜杠。