我用grep
它输出这样的列表
/player/ABc12
/player/ABC321
/player/EGF987
/player/egf751
但是我只想给出玩家的名字,比如ABC321
,EFG987
等等......
开始使用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
@sputnick 有正确的想法grep
,类似的东西实际上是我的首选解决方案。我个人立即想到了一个积极的回顾:
grep -oP '(?<=/player/)\w+' file
但\K
效果也很好。
另一种(稍微短一些)解决方案是sed
:
sed 's:.*/::' file
停止使用 grep。
$ awk -F/ '$2 == "player" { print $3 }' input.txt
ABc12
ABC321
EGF987
egf751
一种使用方式GNU grep
和积极的回顾:
grep -oP '(?<=^/player/).*' file.txt
结果:
ABc12
ABC321
EGF987
egf751