プロが教える店舗&オフィスのセキュリティ対策術

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

<対象テキスト内容>
1 111 333
2 444 555

<結果>
111 444

A 回答 (3件)

まず


unix系OSでよく使われるgrepコマンドのことなのか
Visual BasicのGrepなのか(あるかどうか知りませんが)
Visual Basicでgrepのようなプログラムを作りたいのか
そのあたりをはっきりさせてください。

あと、もう少し「言葉」で説明してください。
スペースで区切られたテキストの第二フィールドを、一行にスペースで区切って出力
でOK?

この回答への補足

回答ありがとうございます。
言葉が少なくて申し訳ございません。

下記内容について回答致します。

unix系OSでよく使われるgrepコマンドのことなのか
Visual BasicのGrepなのか(あるかどうか知りませんが)
Visual Basicでgrepのようなプログラムを作りたいのか

⇒unix系OSでよく使われるgrepコマンド及びVisual Basicでgrepのようなプログラム
 出力結果のようにできるのであれば、どちらでもOKです。
 今現在として、バッチ処理で行いたいと考えておりましたので、grepコマンドを優先に
 考えておりました。

スペースで区切られたテキストの第二フィールドを、一行にスペースで区切って出力
でOK?
⇒その通りでございます。補足ありがとうございます。 

補足日時:2010/07/04 13:05
    • good
    • 0

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の経験あればここでも良いと思うが。
関数でも簡単な場合なら、エクセル関数だけで出来そう。

この回答への補足

ご回答ありがとうございます。
質問に回答致します

レコード数は両者同じ数ですか。
⇒両者同じになっております。
 また、2レコードが意味的にはペアになっております。

プログラムの経験はあるのかな。その言語は?
⇒プログラムの経験は、VB.netを3か月程度です。

補足日時:2010/07/04 13:16
    • good
    • 0

grepは「条件にあった行を抜き出す」コマンドですので、そう言うことは出来ません。



どういう条件で何をどうしたいのか不明ですが、例えば、空白で区切られた第二項目を抜き出して一行に空白区切りで表示したいと言うことなら、

echo `cut -d" " -f2 textfile.txt`

この回答への補足

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

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
-----------------------------------

補足日時:2010/07/04 13:35
    • good
    • 0

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