我有一个播放器列表,我想让播放器全名后跟9个或更少字符,我在Linux中使用grep命令。
我尝试了以下方法,但没有达到预期的效果:
cat players.txt | grep -E ' .[0-9]_\('
以下是我正在使用的数据示例(players.txt文件的一部分)

* Ron_Springett_(1959-1966),_33_Caps
* Alex_Stepney_(1968),_1_Cap
* Nobby_Stiles_(1965-1970),_28_Caps
* Mike_Summerbee_(1968-1973),_8_Caps
* Peter_Swan_(1960-1962),_19_Caps
* Bobby_Tambling_(1962-1966),_3_Caps
* Derek_Temple_(1965),_1_Cap
* Peter_Thompson_(1964-1970),_16_Caps
* Robert_Thomson_(1963-1964),_8_Caps
* Terry_Venables_(1964),_2_Caps
* Dennis_Viollet_(1960-1961),_2_Caps
* Anthony_Waiters_(1964),_5_Caps
* Gordon_West_(1968-1969),_3_Caps
* Frank_Wignall_(1964),_2_Caps
* Ray_Wilson_(1960-1968),_63_Caps
* Tommy_Wright_(1968-1970),_11_Caps
* Gerald_Young_(1964),_1_Cap

最佳答案

你的问题有点含糊,但这看起来或多或少像是你想做的。

cat players.txt | perl -ne '
    s/_/ /g;
    /([A-Za-z]+ [A-Za-z]+).*?([0-9-]+)/ && print "$1 \t $2\n"
'

Ron Springett    1959-1966
Alex Stepney     1968
Nobby Stiles     1965-1970
Mike Summerbee   1968-1973
Peter Swan   1960-1962
Bobby Tambling   1962-1966
Derek Temple     1965
Peter Thompson   1964-1970
Robert Thomson   1963-1964
Terry Venables   1964
Dennis Viollet   1960-1961
Anthony Waiters      1964
Gordon West      1968-1969
Frank Wignall    1964
Ray Wilson   1960-1968
Tommy Wright     1968-1970
Gerald Young     1964

10-08 08:38