如何删除sed
之后没有以特定字符开头的字词?
样品:
echo "--foo imhere -abc anotherone" | sed ...
结果必须是;
"--foo -abc"
答案 0 :(得分:2)
echo "--foo imhere -abc anotherone" |\
sed -e 's/^/ /g' -e 's/ [^-][^ ]*//g' -e 's/^ *//g'
只有当第一个单词出错时才需要第一个和最后一个-e命令。
答案 1 :(得分:1)
gnu sed with -r
:
kent$ echo "--foo imhere -abc anotherone" | sed -r 's/^|\s[^-]\S*//g'
--foo -abc
但是我更喜欢awk来解决它,更直接:
awk '{for(i=1;i<=NF;i++)$i=($i~/^-/?$i:"")}7'
输出:
--foo -abc
答案 2 :(得分:0)
您可以使用ssed
启用PCRE正则表达式,然后您可以使用此功能:
(?<!-)\b\w+
<强> Working demo 强>
echo "--foo imhere -abc anotherone" | ssed 's/(?<!-)\b\w+//'