如何消除由不以特定字符开头的单词sed
?
样品:
echo "--foo imhere -abc anotherone" | sed ...
结果必然是;
"--foo -abc"
如何消除由不以特定字符开头的单词sed
?
样品:
echo "--foo imhere -abc anotherone" | sed ...
结果必然是;
"--foo -abc"
echo "--foo imhere -abc anotherone" |\
sed -e 's/^/ /g' -e 's/ [^-][^ ]*//g' -e 's/^ *//g'
第一个和最后一个-e命令,如果需要,只有当第一个字可能是错误的两种。
GNU的sed与-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
您可以使用ssed
启用PCRE正则表达式,然后你可以用这一个:
(?<!-)\b\w+
工作演示
echo "--foo imhere -abc anotherone" | ssed 's/(?<!-)\b\w+//'