例子:
3|100|[email protected]|0|0|6:1,10,11,12,13,2,3,4,5,6,9|7:1,10,11,13,16,2,4,5,6,9|
grep 之后的预期视图:
[email protected]
答案1
使用cut
:
$ echo '3|100|[email protected]|0|0|6:1,10,11,12,13,2,3,4,5,6,9|7:1,10,11,13,16,2,4,5,6,9|' |\
cut -d'|' -f3
[email protected]
答案2
为什么使用 grep?使用cut
echo "3|100|[email protected]|0|0|6:1,10,11,12,13,2,3,4,5,6,9|7:1,10,11,13,16,2,4,5,6,9|" | cut -d '|' -f 3
答案3
或许awk更适合这种用法:
awk 'BEGIN { FS = "|" } ; { print $3 }'
如果您必须从这样的输入中提取多个字段,我认为使用 awk 是最简单的。
(OFF:请原谅我指出了尴尬的方向)
答案4
grep
只是为了好玩,你可以用以下方法来实现tr
:
<infile grep -Eo '^([^|]+\|){3}' | grep -Eo '[^|]+\|$' | tr -d '|'
第一个正则表达式抓取前三个竖线分隔的字段。第二个 grep 挑选出最后一个字段,tr 删除剩余的分隔符。