我使用grep它输出这样的列表
/player/ABc12
/player/ABC321
/player/EGF987
/player/egf751
Run Code Online (Sandbox Code Playgroud)
不过,我想只给玩家这样的名称ABC321,EFG987等...
Gil*_*not 12
开始使用grep:
$ grep -oP "/player/\K.*" FILE
ABc12
ABC321
EGF987
egf751
Run Code Online (Sandbox Code Playgroud)
或更短:
$ grep -oP "[^/]/\K.*" FILE
ABc12
ABC321
EGF987
egf751
Run Code Online (Sandbox Code Playgroud)
或者没有-P(pcre)选项:
$ grep -o '[^/]\+$' FILE
ABc12
ABC321
EGF987
egf751
Run Code Online (Sandbox Code Playgroud)
或者纯粹的bash:
$ IFS=/ oIFS=$IFS
$ while read a b c; do echo $c; done < FILE
ABc12
ABC321
EGF987
egf751
$ IFS=$oIFS
Run Code Online (Sandbox Code Playgroud)
停止使用 grep。
$ awk -F/ '$2 == "player" { print $3 }' input.txt
ABc12
ABC321
EGF987
egf751
Run Code Online (Sandbox Code Playgroud)
@sputnick有正确的想法grep,这样的东西实际上是我的首选解决方案.我个人立刻想到了一个积极的看法:
grep -oP '(?<=/player/)\w+' file
Run Code Online (Sandbox Code Playgroud)
但\K作品也完美无缺.
另一种(稍短)解决方案是sed:
sed 's:.*/::' file
Run Code Online (Sandbox Code Playgroud)