我有一个像这样的字符串
key2|ex|am||ple
我想要example
。我希望在第一个管道之后得到零件,而没有其他管道。
目前我正在使用awk -F"|" '{print $2,$3,$4,$5}'
,但这不是一个好的解决方案。
答案 0 :(得分:5)
尝试使用 C样式进行循环
echo 'key2|ex|am||ple' | awk -F'|' '{for (i=2; i<=NF; i++) printf("%s", $i)}'
example
答案 1 :(得分:5)
cut -d '|' -f 2- <<< "$string" | tr -d '|'
我会用这种方式写awk解决方案
awk -F '|' -v OFS="" '{$1=""; print}'
答案 2 :(得分:2)
您只需设置输出字段分隔符并取消设置第一个字段:
$ echo 'key2|ex|am||ple' | awk -v FS="|" -v OFS="" '{ $1 = "" ; print }'
example
答案 3 :(得分:1)
使用sed
和tr
:
echo "key2|ex|am||ple" | sed 's/[^|]*|//' | tr -d '|'
答案 4 :(得分:0)
perl -pe 's/^[^\|]*\|//g;' your_file
@Ed评论后更新
perl -F"|" -ane 'shift @F;print "@F"' your_File
答案 5 :(得分:0)
这是一行上的简单替换,因此是sed的一个很好的应用程序:
$ echo 'key2|ex|am||ple' | sed -e 's/[^|]*|//' -e 's/|//g'
example
或者如果您的sed支持ERE:
$ echo 'key2|ex|am||ple' | sed -r 's/^[^|]*[|]|[|]//g'
example
或awk中的等价物(所有awks都支持ERE):
$ echo 'key2|ex|am||ple' | awk '{gsub(/^[^|]*[|]|[|]/,"")}1'
example