• ベストアンサー

検索で1回目のマッチで検索終了

sed -n '/検索文字列/=' 検索対象ファイル で対象ファイル中の検索文字列の行数を取得しているのですが、一回マッチしたらそれ以降の検索はしないようにしたいです。 sed -n '1,/検索文字列/p' 検索対象ファイル | wc -l でできなくはないのですが、sedだけで完結する方法はないでしょうか? もしくはもっと効率的な方法はないでしょうか? よろしくお願い致します。

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.2

sed -n -e '/検索文字列/{' -e = -e q -e } ファイル で、どうですかね。

inshin
質問者

お礼

度々、ありがとうございます。 すみません、その後自己解決しました。 sed -n '/検索文字列/{=;q;}' 検索対象ファイル qの後にも;をつけることで問題なく動作しました。 ありがとうございました。

その他の回答 (1)

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

sed -n '/検索文字列/{=;q}' 検索対象ファイル { } と ; で、複数コマンドが実行できます。

inshin
質問者

お礼

ご回答いただきまして、ありがとうございます。 ご教示いただいた方法を試しましたが、なぜか sed: 1: "/検索文字列 ...": extra characters at the end of q command となってしまい、うまく動作しませんでした。

inshin
質問者

補足

ちなみに使用しているsedはGNU版ではなく、BSD版です。

関連するQ&A