• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ターミナル: パイプラインで検索)

ターミナルでパイプラインを使って検索する方法

このQ&Aのポイント
  • ターミナルでパイプラインを使って、あるASCIIファイルから特定の操作を実行する方法について教えてください。
  • 具体的には、あるファイルからDの点数が一番高かった人の名前と、その人のAの点数の順位を一行のコマンドで取得したいです。
  • 既に試した方法として、sortコマンドとgrepコマンドを組み合わせて操作を試みましたが、うまくいきませんでした。他にどのような方法を試せば良いでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.2

No.1です。 名前と順位を両方表示したいなら、ここでもawkを使って、 sort -k 2 -n -r exam | grep -B 101 `sort -k 5 -n -r exam | head -n 1 | awk '{print $1}'` | awk 'END{print $1,NR}' とすればできます。 awkは便利なので、使い方を学ばれると後々役に立つと思いますよ。

apple_cube
質問者

お礼

ありがとうございます!! awkももっと調べてみようと思います(*^_^*)

その他の回答 (1)

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.1

まず、Dの点数が一番高かった人の行 sort -k 5 -n -r exam | head -n 1 から、名前だけを取り出します。やり方はいろいろありますが、awkを使って、 sort -k 5 -n -r exam | head -n 1 | awk '{print $1}' とすると、 E.T だけが出力されます。 このコマンドをバッククオートを使って、 sort -k 2 -n -r exam | grep -B 101 E.T | wc -l のE.Tの部分に埋め込み、 sort -k 2 -n -r exam | grep -B 101 `sort -k 5 -n -r exam | head -n 1 | awk '{print $1}'` | wc -l とするとご希望の動作になるかと思います。

apple_cube
質問者

お礼

ありがとうございます! awkというのは知らなかったので勉強になりました! でもこれだとDの点数が一番高かった人は誰かというのは表示されませんよね? 同時に表示されるのは無理なのでしょうか??

関連するQ&A