• 締切済み

grepを使用して、対象テキスト内容を以下に結果のように出力したいので

grepを使用して、対象テキスト内容を以下に結果のように出力したいのですが、 正規表現でどのようにすればよいかわかりません。 また、複数行に対してgrepして一行に出力することは可能でしょうか。 <対象テキスト内容> 1 111 333 2 444 555 <結果> 111 444

みんなの回答

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3

まず unix系OSでよく使われるgrepコマンドのことなのか Visual BasicのGrepなのか(あるかどうか知りませんが) Visual Basicでgrepのようなプログラムを作りたいのか そのあたりをはっきりさせてください。 あと、もう少し「言葉」で説明してください。 スペースで区切られたテキストの第二フィールドを、一行にスペースで区切って出力 でOK?

osyou2001
質問者

補足

回答ありがとうございます。 言葉が少なくて申し訳ございません。 下記内容について回答致します。 unix系OSでよく使われるgrepコマンドのことなのか Visual BasicのGrepなのか(あるかどうか知りませんが) Visual Basicでgrepのようなプログラムを作りたいのか ⇒unix系OSでよく使われるgrepコマンド及びVisual Basicでgrepのようなプログラム  出力結果のようにできるのであれば、どちらでもOKです。  今現在として、バッチ処理で行いたいと考えておりましたので、grepコマンドを優先に  考えておりました。 スペースで区切られたテキストの第二フィールドを、一行にスペースで区切って出力 でOK? ⇒その通りでございます。補足ありがとうございます。 

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

Grepといっているのは、UNIX系に詳しくて、Windows系のVBなどを知らないのかな。 わざわざGrepなどと言い出すのは的外れでないかな。 正規表現というのも大げさで、本当に使わなければならないのか疑問で、知ってます的な感じ。 疑問 (1)もとのデータはテキストファイルにあるのか。 (2)111 333というのはスペース区切りのテキストで2フィールドあるレコードのことか。 3つ以上を省略した場合でもかまわないが。 (3)111 333    444 555 から111 444ということは、2レコードが意味的にペアになっているということか 例の数が少なくて質問としては良くわからない。質問には文章の説明の言葉を添えて質問のこと。 ーー 上記のことなら 1レコードずつ、2レコードを読む(2つとも、もちろん別変数に保存) 1つ目の第1フィールドと2つめの第1フィールドをスペースを挟んで結合し、テキストファイルとして書き出す。 フィールドはVBならSPLIT関数で用意に分けられる。 順次2レコードずつ終わりまで処理する。レコード数は両者同じ数ですか。 ーー 質問者は、プログラムの経験はあるのかな。その言語は? それを明確にしてそのカテゴリの質問コーナーに質問しては。 内容的には初歩的なことに見える。 エクセルやエクセルVBA、VB、VB.NETの経験あればここでも良いと思うが。 関数でも簡単な場合なら、エクセル関数だけで出来そう。

osyou2001
質問者

補足

ご回答ありがとうございます。 質問に回答致します レコード数は両者同じ数ですか。 ⇒両者同じになっております。  また、2レコードが意味的にはペアになっております。 プログラムの経験はあるのかな。その言語は? ⇒プログラムの経験は、VB.netを3か月程度です。

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

grepは「条件にあった行を抜き出す」コマンドですので、そう言うことは出来ません。 どういう条件で何をどうしたいのか不明ですが、例えば、空白で区切られた第二項目を抜き出して一行に空白区切りで表示したいと言うことなら、 echo `cut -d" " -f2 textfile.txt`

osyou2001
質問者

補足

ご回答ありがとうございます。 grepは「条件にあった行を抜き出す」コマンドですので、そう言うことは出来ません。 ⇒grepでは、できませんか。別の方法にて検討いたします。 どういう条件で何をどうしたいのか ⇒ 補足致します。 私が質問した時に例があまりよくなかったので、以下により詳しく例を書きました。 フォルダの中にテキストファイルが複数(例では10ファイル)ある場合に、 各テキストファイルのRESULT以下を第二項目を空白区切りでファイルに出力させたい。 各テキストファイル内 ------------------- KOUMOKU 1 1011 1012 2 1021 1022    ・ ・ 10 1101 1102 RESULT 1 2011 2012 2 2021 2022    ・ ・ 10 2101 2102 RESULT2 1 3011 3012 2 3021 3022    ・ ・ 10 3101 3102 ------------------- 出力結果 ----------------------------------- ファイル名1 1011 1021 ・・・ 1101 ファイル名2 1011 1021 ・・・ 1101       ・      ・      ・ ファイル名10 1011 1021 ・・・ 1101 -----------------------------------

関連するQ&A

  • tail & grep の結果表示をリアルタイムに表示させる方法

    tail & grep の結果表示をリアルタイムに表示させる方法 現在以下のようなコマンドを実行しています。 tail -f ログファイル名 | grep -E "正規表現" | grep -E -v "正規表現" で、リアルタイムに表示してほしかったのですがだいぶ遅れてでないと出力されません。 正確にはいろいろ操作をしてログを多めに出さないと出力されないようです。 どうやら画面出力までにはバッファされているようです。 どこでバッファされているか分からないのですが、 とにかくタイムラグ無く(もしくは少なく)リアルタイムに出すようにしたいです。 tail & grep の結果表示をリアルタイムに出力する方法を教えてください。 よろしくお願いします。

  • 連続で複数の単語をGREPしたい

    Windows7端末でサクラエディタを用いてGrepしていますが、Grepしたい単語数が多いので困っています。イメージとしては以下のようにできれば良いと考えています。 ・検索したい単語のリスト C:\単語リスト.txt ・結果を出力するファイル C:\結果テキスト.txt(結果ファイルは単語ごとに出力しても可能) ・検索対象フォルダ(サブフォルダも検索) C:\SourceCode\ 単語リストから一行ずつ取得して検索対象フォルダから該当のファイル名と該当行を結果テキスト.txtに出力します。結果は一つのファイルにまとめて出す場合は、単語ごとにGrepした結果を分けて出力したいです。 もしくは単語単位に複数の結果テキスト.txtを出力しても構いません。 方法ご存知のかた教えて頂ければ幸いです。

  • grepの出力結果の保存

    LinuXのgrepコマンドに関する質問です。 既存のファイルからgrepコマンドで特定の文字列が含まれた行だけを抽出し、その行数を数えるという課題です。 行数を数えるのでwcコマンドを使おうと思ったのですが、wcコマンドは「wc (ファイル名)」という使い方をしますよね。 ということは、grepコマンドで抽出した結果をファイルに保存しなくてはならないのですが、やり方がわかりません。

  • 複数コマンドの実行結果をテキストに出力したい

    バッチファイルで実行した結果をテキストに出力したいです。 コマンド一個であれば問題ないのですが、複数実行した結果をテキストに出力しようと以下の内容でバッチファイルを作ったのですが、実行すると最後のipconfigだけしか出力されませんでした。 複数コマンドの実行結果すべてを出力するためにどこを修正すればよろしいでしょうか。 hostname & wmic bios get serialnumber & ipconfig > C:\Users\user\desktop\%COMPUTERNAME%.txt

  • VBS 以下の可変テキストから値を抽出

    複数の端末からアカウント情報とユーザ名をテキストに出力しています。 そのアカウント情報から、ユーザが所属しているグループを抽出する必要があります。 以下のような形の形式でテキストには出力されています。 ・テキストの内容は一行ずつでも全行まとめてでも呼び出せる(alllineは全行格納、lineは一行ずつループで読み取る) ・内容はそれぞれの端末で可変 ・複数所属している場合もある ・テキストからユーザの所属グループのみを出力する たとえば以下のテキストからNakayamaの所属グループであるAdministrators: とUsersを抽出したい場合ですが、 InstrでInstr(allline, nakayama)探しだし、その場所の文字数を特定することはできます。 ですがそこからどうやってAdministratorsのみを取得すればよいのでしょうか。 思いついたのは指定のユーザを検索して、 ユーザをキーにそれより上に:がある行を特定しその行を抽出して、 Replaseで:を消してやればいいと思うのですが、 そのようなことはできるのでしょうか。 他の方法でもありましたらご教示ください。 テキストのアカウント情報サンプル ▲アカウント Administrators: Administrator Nakayama Kimura DomainUser Backup Operators: Guest: Users: Kitagawa Maruyama Nakayama PowerUser:

  • コマンドの出力結果をn行おきに出力する方法

    コマンドの出力結果をn行おきに出力する、出来るだけシンプルな方法を知りたいです。 例えば、あるファイルの中身をgrepで絞込み、かつそれを5行ごとに出力させる等。 シェルの種類は問いません。 宜しくお願い致します。

  • cmdで略された結果をテキスト出力したいのですが

    続けてお世話になります   以下のようにコマンドプロンプトで略された結果 000004:ぅぁぁ から 1000000:ゅにく など飛んでしまった出力を テキストファイルに全て略さず出力することはできますか?  どなたかご教授お願い致します

  • バッチでテキストを出力したときに改行ができない

    バッチファイルでテキストを出力するのですが、改行ができません echo 一行目 > C:\temp.txt ? echo 二行目 >> C:\temp.txt として結果C:\temp.txtファイル内に  一行目  二行目 ではなく  一行目  二行目 としたいのですが、、 ?にはいるものがわかりません。 echo " " >> C:\temp.txt としても""が入ってしまうし echo   >> C:\temp.txt (全角スペース)を入れても"ECHO は <ON> です。"とメッセージが出てしまいます。 わかる方お願い致します。

  • テキストエディタ grepの機能について質問です。

    テキストエディタ grepの機能について質問です。 自分のHPのHTMLを修正するのにサクラエディタやTeraPadを使っていますが、任意の文字列を含む行を 一気に修正したいとき、grep機能を使うことになると思います。 ただこの場合、例えば「サクラエディタ」の場合だと検索結果が別ウィンドウに表示され、 そこで修正しても元のソースには反映されません。そのまま保存すれば検索結果行だけのデータになってしまいます。 検索結果を修正(時には行ごと削除)したものが、元のソースにそのまま反させることはできないのでしょうか。 テキストエディタ自体使い始めて間もないので、私が機能を見落としていたら申し訳ありません。

    • ベストアンサー
    • HTML
  • excel vbaでテキスト出力

    A行=ファイル名 B~D行=テキスト内容 としてテキストファイルを出力したいのですが、やり方を教えていただけないでしょうか? A2から空白にあたるまでテキストを順々に出力したいのですが・・・ よろしくお願いします

専門家に質問してみよう