私は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