2016-09-12 7 views
-2

私は、グラフ作成の目的では使用されていない書き込み/データ/段落を含むマシンからの出力ですが、どこかに私はグラフ化する必要がある実際のデータを持っています。私は、データをファイルから検索し、txtファイルにデータを出力して、後でグラフ化する必要があります。データをファイルから検索し、そのデータだけで新しいtxtファイルを作成する

ファイルの途中でデータがこのようになります(各データファイルは、潜在的に行/列と数字の異なる量を持つスペースで区切られます):

<> 1 2 3 4 5 6 etc. 

A 1.2 1.3 1.4 etc. 

B 0.2 0.3 0.4 etc. 

C 2.2 2.3 2.4 etc. 

etc. 

私の考え方は、これまでgrepすることでした最初の行(grep '^ <>'ファイル)を見つけるために '<>'に変更しましたが、それらを検索しようとすると、行/列の可変量をどのように考慮するか分かりません。また、awkを使用してディレクトリ内のすべての.txtファイルをループし、新しい出力ファイルに出力するので、複数のファイルを一度に処理できます(この検索/出力はawkでも可能です)。

編集:

--input /期待される出力file--

入力ファイル

This is the data 

Here are some paragraphs 

<> 1 2 3 

A 1.2 1.3 1.4 

B 0.2 0.3 0.4 

C 2.2 2.3 2.4 

more paragraphs 

more paragraphs 

出力ファイル:

複数のTXTにこれを行うにはawkを使用し
<> 1 2 3 

A 1.2 1.3 1.4 

B 0.2 0.3 0.4 

C 2.2 2.3 2.4 

ディレクトリ内のファイル。

+3

は終了トークン/タグはありますか?つまり、 '<>'は、あなたが望むデータがどこから始まるかを伝えます。それがどこで終わるかはどうやって決めるのですか? – sal

+0

sal - もう1つの問題です。終了トークンはありません(出力ファイルの設定を制御できません)。 –

+0

james - 私はあなたの質問を完全に理解しているかどうかはわかりませんが、元のファイルでデータを正確に取得しようとしています。 –

答えて

0

ここはawkのものです。レコード内で<>または10進数([0-9]+\.[0-9]+)を探します。それが十分でない場合は、多分あなたは3つの数字をテストするために10進数のテスト部分を拡大しようとすることができ、のようなもの:(/ [0-9]+\.[0-9]+){3}/

$ awk '/<>/||/[0-9]+\.[0-9]+/' foo 
<> 1 2 3 
A 1.2 1.3 1.4 
B 0.2 0.3 0.4 
C 2.2 2.3 2.4 
関連する問題