我有一个这样的字符串
key2|ex|am||ple
我想得到example
. 我想在第一个管道之后得到零件,而没有其他管道。
目前我正在使用awk -F"|" '{print $2,$3,$4,$5}'
,但这不是一个好的解决方案。
cut -d '|' -f 2- <<< "$string" | tr -d '|'
我会这样写awk解决方案
awk -F '|' -v OFS="" '{$1=""; print}'
尝试使用C 风格的 for 循环执行此操作
echo 'key2|ex|am||ple' | awk -F'|' '{for (i=2; i<=NF; i++) printf("%s", $i)}'
example
您可以简单地设置输出字段分隔符并取消设置第一个字段:
$ echo 'key2|ex|am||ple' | awk -v FS="|" -v OFS="" '{ $1 = "" ; print }'
example
使用sed
和tr
:
echo "key2|ex|am||ple" | sed 's/[^|]*|//' | tr -d '|'
perl -pe 's/^[^\|]*\|//g;' your_file
在@Ed 发表评论后更新
perl -F"|" -ane 'shift @F;print "@F"' your_File
这是单行的简单替换,因此是 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 中的等价物(所有 awk 都支持 ERE):
$ echo 'key2|ex|am||ple' | awk '{gsub(/^[^|]*[|]|[|]/,"")}1'
example