比赛后Grep打印

时间:2012-10-01 23:54:56

标签: bash grep

我使用了grep来输出像这样的列表

/player/ABc12
/player/ABC321
/player/EGF987
/player/egf751

但是我想只给出ABC321EFG987等玩家的名字......

4 个答案:

答案 0 :(得分:12)

开始使用grep

$ grep -oP "/player/\K.*" FILE
ABc12
ABC321
EGF987
egf751

或更短:

$ grep -oP "[^/]/\K.*" FILE
ABc12
ABC321
EGF987
egf751

或没有-P(pcre)选项:

$ grep -o '[^/]\+$' FILE
ABc12
ABC321
EGF987
egf751

或使用纯bash

$ IFS=/ oIFS=$IFS
$ while read a b c; do echo $c; done < FILE
ABc12
ABC321
EGF987
egf751
$ IFS=$oIFS

答案 1 :(得分:5)

@sputnick对grep有正确的想法,这样的东西实际上是我的首选解决方案。我个人立刻想到了一个积极的看法:

grep -oP '(?<=/player/)\w+' file

\K的效果也非常好。

替代(稍短)解决方案是使用sed

sed 's:.*/::' file

答案 2 :(得分:3)

停止使用grep。

$ awk -F/ '$2 == "player" { print $3 }' input.txt
ABc12
ABC321
EGF987
egf751

答案 3 :(得分:0)

使用GNU grep和积极看守的一种方式:

grep -oP '(?<=^/player/).*' file.txt

结果:

ABc12
ABC321
EGF987
egf751