- ベストアンサー
検索で1回目のマッチで検索終了
sed -n '/検索文字列/=' 検索対象ファイル で対象ファイル中の検索文字列の行数を取得しているのですが、一回マッチしたらそれ以降の検索はしないようにしたいです。 sed -n '1,/検索文字列/p' 検索対象ファイル | wc -l でできなくはないのですが、sedだけで完結する方法はないでしょうか? もしくはもっと効率的な方法はないでしょうか? よろしくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
sed -n -e '/検索文字列/{' -e = -e q -e } ファイル で、どうですかね。
その他の回答 (1)
- notnot
- ベストアンサー率47% (4900/10358)
回答No.1
sed -n '/検索文字列/{=;q}' 検索対象ファイル { } と ; で、複数コマンドが実行できます。
質問者
お礼
ご回答いただきまして、ありがとうございます。 ご教示いただいた方法を試しましたが、なぜか sed: 1: "/検索文字列 ...": extra characters at the end of q command となってしまい、うまく動作しませんでした。
質問者
補足
ちなみに使用しているsedはGNU版ではなく、BSD版です。
お礼
度々、ありがとうございます。 すみません、その後自己解決しました。 sed -n '/検索文字列/{=;q;}' 検索対象ファイル qの後にも;をつけることで問題なく動作しました。 ありがとうございました。