- ベストアンサー
検索で1回目のマッチで検索終了
sed -n '/検索文字列/=' 検索対象ファイル で対象ファイル中の検索文字列の行数を取得しているのですが、一回マッチしたらそれ以降の検索はしないようにしたいです。 sed -n '1,/検索文字列/p' 検索対象ファイル | wc -l でできなくはないのですが、sedだけで完結する方法はないでしょうか? もしくはもっと効率的な方法はないでしょうか? よろしくお願い致します。
- みんなの回答 (2)
- 専門家の回答
関連するQ&A
- Application.Matchで特定行の検索
Excel2007のVBAについてご教授ください。 Application.Matchで特定列の文字列検索を使いたいんですが以下のような構文で使えますでしょうか? ----------------- Set usWS = Worksheets("Sheet1") KeyIdValue = "hogehoge" JANCol = 9 m = Application.Match(KeyIdValue, usWS.Columns(JANCol), 0) ----------------- Sheet1のワークシートの9(I列)列目に"hogehoge"が入っている行数をmに入れたいです。 (最初に見つかった行数で構いません。複数は見つかりません。) 検索されません?というようなエラー(エラー2042)が出るのですが、使い方が誤っていないかご教授させて頂きたいです。 変数の宣言はコンパイルエラーが出ないので問題ありません。 Application.Matchの使い方に問題ないか教えて頂けませんでしょうか? よろしくお願いします。
- ベストアンサー
- Visual Basic
- バッチファイルで文字列を順番問わずマッチさせたい
バッチファイルで、2個以上の文字列を順番問わずマッチさせたいと考えています。 例えば、 「111 222 333 444 555 666 777」 という内容のテキストファイルがあったとして、 sedコマンドを使って 「222」と「444」と「666」が この順番で含まれている行を置換したい場合、 sed -e "s/.*222.*444.*666.*/置換後の文字列/" in.txt > out.txt とすれば、問題なく置換されると思います。 しかし、上記の例では、 「777 666 555 444 333 222 111」 という内容のテキストファイルは置換されません。 文字列の順番を問わず、 「222」と「444」と「666」が含まれている行ならば、 その行を置換する、といった事は出来ないでしょうか。 sedコマンド以外でも構いませんので、何かいい方法をご存知の方がおられましたらお教え頂けないでしょうか。
- ベストアンサー
- その他(プログラミング・開発)
- 正規表現にマッチした文字列の抽出
閲覧頂きありがとうございます。 Linuxのsedコマンドに該当するwindowsコマンドは存在しますでしょうか? 存在しない場合、batやマクロでの長い記述となってしまっても構いません。 検索で調べたところ、特定のdllを入れればsedを使用できるとあったのですが、その方法は取りたくありません。 100万行以上あるテキストファイル(一行=一レコード)の中から、正規表現とマッチする文字列の抽出作業です。 1行に1つ、不特定な場所にその文字列が存在するという形です。 その抽出した文字列を、別のテキストファイルへ吐き出す…といった処理を想定しています。 どうかご教示いただけると幸いです。 環境 windows7、EmEditor使用
- 締切済み
- Windows系OS
- sedコマンド置換について(マッチした数字を演算に再利用したい)
こんにちは Linuxのsedコマンドについて質問させてください。 軽く検索をかけたりUNIXのコマンド本を調べましたが、わかりませんでした。 例えば正規表現でマッチした数字を2倍して返す処理をする場合 perlではhogeという文字列に対して hoge=~s/(\d+)/$1*2/g; このような処理で実現できると思います。 このように今マッチしたものに対して何か処理を行って置換するということは sedコマンド、もしくはそれを使ったシェルスクリプトで処理することは可能でしょうか? sedの方が処理速度が速いので、こちらを使いたいのです。
- ベストアンサー
- Linux系OS
- grepにマッチした正規表現の文字列を取得したい
grepにマッチした正規表現の文字列を取得し、マッチした文字列を 一覧で取得したいのですが、方法がわかりません。 ※例 grep [0-9][0-9][0-9][0-9][0-9] 検索ファイル名 > 出力ファイル名 不明点あればお知らせください。 よろしくお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- preg_match : マッチした位置の取得
phpにおける正規表現で、パターンにマッチした位置を取得したいのですが、引数で検索する位置を指定することはできても容易に取得する方法がみあたらないので困っています。 マッチした文字列を strstr() を使って位置取得するという方法しか思い浮かばないのですが、どうにかならないでしょうか。
- ベストアンサー
- PHP
- ファイルからある文字列の個数を数えたい
perl5でunixの"wc"や"grep -c"みたいに1つのファイルの中からある文字列の個数を カウントするスクリプトを作ろうとしています。 ファイルは256文字×10万行くらいのテキストで、 検索する文字列は15文字前後×40個(例えば「apple-000001」「lemon_orange」など)です。 どのようなスクリプトを組んだら効率よく各文字列をカウントできるのでしょうか? それよりwcやgrep -cを40回行った方が早いのでしょうか?
- ベストアンサー
- Perl
- grepの出力結果の保存
LinuXのgrepコマンドに関する質問です。 既存のファイルからgrepコマンドで特定の文字列が含まれた行だけを抽出し、その行数を数えるという課題です。 行数を数えるのでwcコマンドを使おうと思ったのですが、wcコマンドは「wc (ファイル名)」という使い方をしますよね。 ということは、grepコマンドで抽出した結果をファイルに保存しなくてはならないのですが、やり方がわかりません。
- 締切済み
- Linux系OS
- 正規表現でマッチさせたい文字列の指定方法
正規表現でマッチさせたい文字列の指定方法について こんにちは。正規表現について教えてください。 秀丸エディタでgrepする時に先頭行に 『ファイル名(行数): 』という文字列が 先頭行に入りますが、これを正規表現を使用して消したいと思っています。 具体的には以下のような表現ですが、どのように指定するのが正しいでしょうか。 いくらかテストしているのですが、なかなかうまくできず困っています。 消したい文字列 test.log-110411-01.bak.text(38): よろしくお願いします
- 締切済み
- その他(プログラミング・開発)
- クリーンインストール後のbios設定の戻し方についてご質問です。
- クリーンインストールを行った後、biosの設定を元に戻す必要があるかについて教えてください。
- Lenovoのノートブックにおいて、DVDでクリーンインストール後に必要なbios設定の確認についてお伺いします。
お礼
度々、ありがとうございます。 すみません、その後自己解決しました。 sed -n '/検索文字列/{=;q;}' 検索対象ファイル qの後にも;をつけることで問題なく動作しました。 ありがとうございました。