我对 sed 不是很有经验,但是如果我有这样的字符串:
asdf | this is something | something else | nothing | qwerty
我可以删除第一个和第二个实例之间的所有内容|
,以及其中一个吗?
理想的输出是:
asdf | something else | nothing | qwerty
我试过sed 's/|*|//2'
了,但这只会删除第二个管道。
谢谢
s/|[^|]*|/|/
应该做的工作
echo 'asdf | this is something | something else | nothing | qwerty' |
sed 's/|[^|]*|/|/'
asdf | something else | nothing | qwerty
也可以使用 awk 完成:
awk -F '|' -v OFS='|' '{sub($2 " *\\|", "")}1' <<< "$str"
asdf | something else | nothing | qwerty
使用纯 BASH:
echo "${str%%|*}|${str#*|*|}"
asdf | something else | nothing | qwerty
检查这个:
sed 's/|[^|]*//'
以你的例子
kent$ sed 's/|[^|]*//' <<<"asdf | this is something | something else | nothing | qwerty"
asdf | something else | nothing | qwerty