質問

私はログファイルを必要とすることを抽出特定のパターンです。だその過程としての新しいファイルです。grep Linuxのが通常だというが、正規表現の複数のラインを理解していgrepは致しません。

ここでは一例ですからログ/デバッグファイル:


Da:
1.328   0.5045  

Db:
0.6415  0.1192  

Lambda:
0.4429  -0.35   
-0.0461 -0.02421    

seps:
0.714272

を探してい /Lambda:\n([-\d\.]+)\s+([\-\d\.]+)\s+\n([\-\d\.]+)\s+([\-\d\.]+)/ そして出力したいならラインへのファイルを保存し、新規ファイルの除去、ラムダ-並べ替える番号のと同じオカメラによる画像認識によって出力 \1\s\2\s\3\s\4\n

そして実際に二つの質問:

  1. やユーティリティこの、システム?
  2. があるので、これを具体的にはwindows?

今は単純であることを逃れました。されているのではないかと思い滞在windowsでもしなくてはならなくなり、Linuxます。

役に立ちましたか?

解決 3

すべての答えてくれてありがとう。私はあなたがPerlやawkのために私を与えた答えが好き。私はPerlを知らないそれらの奇妙なプログラマーの一人ですので、私はルビーのルートを取りました。ここに私のソリューションです。

x=ARGV[0]
f=File.new(ARGV[1])
g=File.new(ARGV[2],"w")
f.read.gsub(/#{x}:\s*(([\d\.\-]*\t*)+\n)+/ ){|entry|
    puts entry
    g.puts entry.gsub(/#{x}:\n/,'').gsub(/\s+/,"\t").strip
}

この私が私の知る限り、リダイレクトとパイプをサポートしていませんNppExecを通して私のエディタメモ帳++、とユーティリティとして使用することができます。私はプログラムによって診断する必要がある出力のいずれかを収集するためにこれもできます。おかげで再びy'allの。

他のヒント

このはawkperlおよびを解析するようなのステートフルのための良い候補である(これらは、WindowsのCMD.EXEの両方で実行されます、あなたはperlawk/sedおよび/またはPATHを持っている、などの提供もちろん、Linuxや他のUnix系OS)上:

awk "/^Lambda/ { in_lambda=1 ; next } in_lambda && /^ *$/ { in_lambda=0 ; printf \"\n\" ; next } in_lambda { printf \"%s \", $0 }" input_file >output_file

または

perl -ne "chomp; if (/^Lambda/) { $in_lambda = 1 } elsif ($in_lambda && /^ *$/) { $in_lambda=0 ; printf \"\n\" } elsif ($in_lambda) { printf \"%s \", $_ }" input_file >output_file

<時間>

あなたは、必要に応じて空白文字を正規化(および行の末尾に空白をトリム)するために第2のパスを実行することができます。

awk "/^Lambda/ { in_lambda=1 ; next } in_lambda && /^ *$/ { in_lambda=0 ; printf \"\n\" ; next } in_lambda { printf \"%s \", $0 }" input_file | sed -e "s: *: :g" -e "s: *$::" >output_file

または

perl -ne "chomp; if (/^Lambda/) { $in_lambda = 1 } elsif ($in_lambda && /^ *$/) { $in_lambda=0 ; printf \"\n\" } elsif ($in_lambda) { printf \"%s \", $_ }" input_file | perl -ne "s/ +/ /g; s/ +$//g; print" >output_file

あなたはPerlやPythonやRubyやPHPをインストールし、かなり簡単にスクリプトを書くことができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top