需要有关 sed 命令的帮助

需要有关 sed 命令的帮助

我需要帮助输入单个sed命令来搜索下面 2000 年至 2009 年(含)之间发布的游戏。我尝试过 (/) 搜索,但它对我不起作用。

1   Wii Sports                    Wii  2006 Nintendo            41.36
2   Super Mario Bros.             NES  1985 Nintendo            29.08
3   Duck Hunt                     NES  1985 Nintendo            26.93
4   Tetris                        GB   1989 Nintendo            23.20
5   Mario Kart Wii                Wii  2008 Nintendo            15.91
6   Wii Sports Resort             Wii  2009 Nintendo            15.61
7   Kinect Adventures!            X360 2010 MS Game Studios     15.09
8   New Super Mario Bros. Wii     Wii  2009 Nintendo            14.53
9   Wii Play                      Wii  2007 Nintendo            13.96
10  Super Mario World             SNES 1991 Nintendo            12.78
11  New Super Mario Bros.         DS   2006 Nintendo            11.28
12  Pokémon Red/Green/Blue        GB   1998 Nintendo            11.27
13  Super Mario Land              GB   1989 Nintendo            10.83
14  Call of Duty: Black Ops       X360 2010 Activision           9.76
15  Mario Kart DS                 DS   2005 Nintendo             9.71
16  Super Mario Bros. 3           NES  1990 Nintendo             9.54
17  Grand Theft Auto:San Andreas  PS2  2004 Rockstar Games       9.43
18  Call of Duty: Modern Warfare  X360 2011 Activision           9.07
19  Grand Theft Auto V            X360 2013 Rockstar Games       9.06

答案1

更好用awk对于这个作为文本处理工具的用例,同时您可以使用上面的内容来搜索您要查找的内容(请注意,这仅适用于您的列表):

sed  -n '/200[0-9]/p' file

-n :将抑制完整的文件输出

p命令:用于打印匹配的模式

AWK(假设列由制表符分隔):

awk -F '\t' '{if($4 >= 2000 && $4 <= 2009 ) {print $0}}' file  

答案2

如果这些是固定宽度字段,并且所有字符的宽度均为 1 并且只有 1(没有零宽度或双宽度字符,也没有 TAB 等控制字符),您可以这样做:

<your-file grep -E '^.{38}200[0-9] '

假设年份字段从第 39 列开始。

也就是说,查找^38字符 ( .) 开头、后跟 200、0 到 9 范围内的字符和空格的行。

答案3

我建议使用 grep,而不是使用 sed。

在终端中运行: cat YOURFILE | grep 年份

将 YOURFILE 替换为您的文件名。将 YEAR 替换为您想要查看当年发布的所有游戏的年份。

希望这可以帮助!

相关内容