- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ターミナル: パイプラインで検索)
ターミナルでパイプラインを使って検索する方法
このQ&Aのポイント
- ターミナルでパイプラインを使って、あるASCIIファイルから特定の操作を実行する方法について教えてください。
- 具体的には、あるファイルからDの点数が一番高かった人の名前と、その人のAの点数の順位を一行のコマンドで取得したいです。
- 既に試した方法として、sortコマンドとgrepコマンドを組み合わせて操作を試みましたが、うまくいきませんでした。他にどのような方法を試せば良いでしょうか?
- みんなの回答 (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は便利なので、使い方を学ばれると後々役に立つと思いますよ。
その他の回答 (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 とするとご希望の動作になるかと思います。
質問者
お礼
ありがとうございます! awkというのは知らなかったので勉強になりました! でもこれだとDの点数が一番高かった人は誰かというのは表示されませんよね? 同時に表示されるのは無理なのでしょうか??
お礼
ありがとうございます!! awkももっと調べてみようと思います(*^_^*)