- 締切済み
grepの出力結果の保存
LinuXのgrepコマンドに関する質問です。 既存のファイルからgrepコマンドで特定の文字列が含まれた行だけを抽出し、その行数を数えるという課題です。 行数を数えるのでwcコマンドを使おうと思ったのですが、wcコマンドは「wc (ファイル名)」という使い方をしますよね。 ということは、grepコマンドで抽出した結果をファイルに保存しなくてはならないのですが、やり方がわかりません。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- entree
- ベストアンサー率55% (405/735)
wcの引数については、マニュアルを参照すると「A pathname of an input file. If no file operands are specified, the standard input shall be used.」と書かれています。 パイプ「|」を通すことで、コマンドの標準出力を次のコマンドの標準入力とすることができますので、以下のようにすればお望みのことが達成できるかと思います。 grep hogehoge file | wc -l ※wcの「-l」オプションは、行数のみをカウントするオプション ちなみに、以下のようにgrepの-cオプションを使っても目的が達成されるかと思います。 grep -c hogehoge file もし、まだパイプについて学ばれていないのであれば、出題者が期待する回答はこちらなのかもしれませんね。
- kmee
- ベストアンサー率55% (1857/3366)
man wc でマニュアルを良く読んでください。 凡例には [FILE ...] 等と書かれているはずです。 この[]で囲った表記は「あっても無くてもよい」という意味です。つまり「(1つ以上の)ファイル(あっても無くてもよい)」という意味になります。 そして、詳しい説明には「FILEを指定しない時は、標準入力から」と書かれているはずです。 grepは結果を標準出力に出力するので、それをwcの標準入力へ継げばいいわけです。 「リダイレクト」「パイプ(ライン)」ってわかりますか? # grepの出力をファイルに保存する方法がわからない、となると、リダイレクトがわかってないような気もするのですが Linuxの元となったUNIXでは、一つ一つのコマンドは簡単にして、それを組合せることで、複雑な処理を行なう、というのが基本の考えとなっています。 そのために、多くのコマンドが、(入力ファイルを指定しないときは)標準入力から入力して、(出力ファイルを指定しないときは)標準出力へ出力するようになっています。そうでないコマンドでも、標準入力から入力、標準出力へ出力するように変更するオプションが用意されていることが多いです。 多くのLinuxでは、UNIXコマンド互換のGNUのツールが使われており、同じようにコマンドを組合せることができます。
- Wr5
- ベストアンサー率53% (2173/4061)
既に回答あるようにパイプで処理するのがふつ~だと思いますが…… 「それでもファイルに落としたい」というのならば、『リダイレクト』で検索して下さい。 # さくっと答え書いてもいいんでしょうが、自分で調べる。という行為を挟まないと覚えないかも知れませんしねぇ…
いちいちファイルに落とさなくても、パイプで接続すれば一発でしょう? linux パイプ でググれば、いくらでも答えが出てきますよ。