ママのスキンケアのお悩みにおすすめアイテム

条件Aに当てはまって且つ条件Bに当てはまらないものの件数を表示したいのですが

$ grep -c "条件A" ファイル名 | grep -v "条件B"

としても条件Bが除外されないままの件数しか出てきません。

どのように記述すればいいのでしょうか?

A 回答 (3件)

んじゃ


$ grep "条件A" ファイル名 | grep -v -c "条件B"
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
条件B側に-cを付ければよかったのですね。
全然その発想にいたれませんでした--;
動作確認できました!!

お礼日時:2012/11/19 19:39

パイプラインの動作を理解されていないようですね。


条件Bが -c(一致行数)の出力結果にしかかからないからです。

$ grep "条件A" ファイル名 | grep -v "条件B" | wc -l
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

>条件Bが -c(一致行数)の出力結果にしかかからないからです。
やっぱりそうですよね。

>$ grep "条件A" ファイル名 | grep -v "条件B" | wc -l
私もこれに行きついた所なのですがgrepコマンドだけで書く方法ってあるでしょうか?
拘ってるわけではないんですが grep -c で件数が出せるならどうにか方法があるんじゃないかと思いまして^^;

grep -c ファイル名(grep 条件A -v 条件B)
こんな書き方が無いのはわかってるんですがイメージはこのような感じです。

お礼日時:2012/11/19 14:56

なぜなのか, 理由は理解できていますか?

この回答への補足

一つ目のgrepで件数出しているのにそれにgrep -vで除外しようとしてしまうからだと認識しています。

>$ grep "条件A" ファイル名 | grep -v "条件B" | wc -l
で求めたい結果が出てくるのはわかったんですがgrepとwcコマンドを組み合わせるのではなくgrepコマンドだけでそもそも出来ないのだろうかと思いまして・・

$ grep "条件A" ファイル名 | grep -v "条件B"
をgrepの-cで件数出す方法ってないのでしょうか?

補足日時:2012/11/19 14:51
    • good
    • 0
この回答へのお礼

条件B側に-cをつけることで実現できることがわかりました!
ありがとうございました♪

お礼日時:2012/11/19 19:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qgrepで検索文字列が完全一致した行だけ取り出す方法

grepの文字列検索で検索文字列が単語として、完全一致した行だけ取り出す方法はないでしょうか?

通常は
grep hoge hoge.txt

と打つと、hogeが含まれる行が出力されますが、今回は含まれる行ではなくて完全に文字列が一致した行だけ取り出したいのです。

例えばhoge.txtの中に
cc ghoge
kkl hogem
jjll hoge
という3行があったとしたら最後の行でhogeという文字が空白で区切られた行だけ取り出したいのです。

何かよい方法があれば教えてください

Aベストアンサー

-w オプションじゃだめですか?

参考URL:http://www.linux.or.jp/JM/html/GNU_grep/man1/grep.1.html

Qバッチでテキストファイルから任意の行のみ取得したい

batファイルを作成していて、
txtから特定の行のみをとりだし、変数に入れたいです。
どうもよくわからないので質問したいと思います。
まず以下の様なテキストファイルがあります。
-------------------
111
222
333
-------------------
実際の値、行数は違いますが、こんな感じに文字列が複数行並んでいます。

行いたい動作は、
-----------------------------------------
1.テキストファイルの1行目を変数Textに入れる(set Text=111)
2.変数Textを使用し色々処理をする
3.テキストファイルの2行目を変数Textに入れる(set Text=222)
4.変数Textを使用し色々処理をする
-----------------------------------------
コレを繰り返します。
2と4は同じ動作ですので、行数のカウンタを設定しループさせる予定です。
n行目を全て取り出す方法がわかれば行けると思うのですが、
どうも見つかりません。ご存知の方がいればお教え願いたいと思います。

batファイルを作成していて、
txtから特定の行のみをとりだし、変数に入れたいです。
どうもよくわからないので質問したいと思います。
まず以下の様なテキストファイルがあります。
-------------------
111
222
333
-------------------
実際の値、行数は違いますが、こんな感じに文字列が複数行並んでいます。

行いたい動作は、
-----------------------------------------
1.テキストファイルの1行目を変数Textに入れる(set Text=111)
2.変数Textを使用し色々処理をする
3.テキストファイルの2行目を変数T...続きを読む

Aベストアンサー

No3ですが、たぶん提示したスクリプトを見ると、ある事に気がつくはず?

findstr /n /r "." a.txt | findstr /r "^3:"

で3行目を表示してくれます。え!? それだけ。そうなんです

ただ、あと、先頭の”3:” をどうやって切り離すか? と言う問題にぶつかる。さらにファイルに先頭に”3:”があった場合、どうするのか? さらに、findstr の正規表現の動作が??? 表示すれるのはいいが、変数にどうやってセットするのか?

となる。結局 for 文を使いまわす事になります。

まあ、適当に改変して、上記の問題を解決してください。


人気Q&Aランキング