7

私はgrepこのようなリストを出力することを使用しました

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

ABC321ただし、、、などのプレーヤーの名前だけを付けたいEFG987...

4

4 に答える 4

17

使用を開始し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
于 2012-10-02T00:09:18.153 に答える
9

@sputnick は について正しい考えを持っておりgrep、そのようなものが実際に私の好ましい解決策になります。私は個人的にすぐに肯定的な後読みを考えました。

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

しかし、\K同様に完全にうまく機能します。

代替の(やや短い)ソリューションは次のsedとおりです。

sed 's:.*/::' file
于 2012-10-02T00:31:30.937 に答える
4

grepの使用を停止します。

$ awk -F/ '$2 == "player" { print $3 }' input.txt
ABc12
ABC321
EGF987
egf751
于 2012-10-02T00:05:43.300 に答える
0

一方向の使用GNU grepと肯定的な後読み:

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

結果:

ABc12
ABC321
EGF987
egf751
于 2012-10-02T00:30:06.140 に答える