sed コマンドヘルプ

sed コマンドヘルプ

sed1980年代にリリースされたすべてのゲームに関する情報を検索して表示し、結果をアルファベット順に並べるコマンドが必要です。 justを使用してこれを行うための良い方法はありますかsed

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.0

ベストアンサー1

sedawk必要なデータを抽出するために使用することは不可能ではありませんが、フィールド(列)で構成されるレコード(行)で整理できるデータを扱うのに適しているため、不必要に複雑な練習になります。難しいのは、4番目の列に一致する正規表現を見つけ、それが正しい範囲の整数であることを確認することです。整数を計算して処理するのはうまくいきません。sed並べ替え時に迷惑

データがタブで区切られているとします(「アルファベット順」は「辞書順」を意味します)。

awk -F '\t' '$4 >= 1980 && $4 < 1990' file | sort -k 2

これにより、awkタブ区切りの4番目のフィールド(年)が1980年から1989年の間の数字である行を抽出します。結果の行は、スペースで区切られた2番目のフィールド(タイトルと行の残りの部分)でアルファベット順にソートされます。

ファイルがスペースで区切られている場合は、タブ文字の代わりに複数のスペースで構成されるランダムな順序を区切り文字として使用できます。

awk -F ' {2,}' '$4 >= 1980 && $4 < 1990' file | sort -b -k 2

-bここで使用されているオプションを参照してくださいsort。 2番目のフィールドの先行スペースは無視する必要があります。データの区切り文字が単一のタブ文字の場合は必要ありません。

質問のデータから私が得たもの

3   Duck Hunt                     NES  1985  Nintendo            26.93
2   Super Mario Bros.             NES  1985  Nintendo            29.08
13  Super Mario Land              GB   1989  Nintendo            10.83
4   Tetris                        GB   1989  Nintendo            23.20

おすすめ記事