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