2017-07-27 3 views
0

以下のような長いログが2つあります。私は数字の2列は(それが上で発生することができます表示された部分からのみ第二のカラムを取る必要が与えられたログの各ペアからbashを使用して2つのログファイルの列を結合する

@ autoscale onread none 
@ with g0 
@ g0 on 
@ title "projection on eigenvectors (nm)" 
@ xaxis label "Time (ps)" 
@ world xmin 6.94688e-310 
@ world xmax 0.0479958 
@ world ymin 1.84622 
@ world ymax 4.02719 
@ view xmin 0.15 
@ view xmax 0.85 
@ view ymin 0.15 
@ view ymax 0.85 
@ yaxis label "vec 1" 
@ xaxis tick major 0.01 
@ xaxis tick minor 0.005 
@ xaxis ticklabel start type spec 
@ xaxis ticklabel start 1.85 
@ yaxis tick major 1 
@ yaxis tick minor 0.5 
@ yaxis ticklabel start type spec 
@ yaxis ticklabel start 2 
    0.0000 2.23088 
    0.0980 2.19816 
    0.1137 2.26237 
    0.0934 2.28405 
    0.0926 2.26499 
    ................. 
    0.0911 2.20825 
    0.0873 2.32075 

ログ2

@ autoscale onread none 
@ with g0 
@ g0 on 
@ title "projection on eigenvectors (nm)" 
@ xaxis label "Time (ps)" 
@ world xmin 6.94067e-310 
@ world xmax 0.0889754 
@ world ymin -2.16935 
@ world ymax 1.86708 
@ view xmin 0.15 
@ view xmax 0.85 
@ view ymin 0.15 
@ view ymax 0.85 
@ yaxis label "vec 2" 
@ xaxis tick major 0.02 
@ xaxis tick minor 0.01 
@ xaxis ticklabel start type spec 
@ xaxis ticklabel start -2.16 
@ yaxis tick major 2 
@ yaxis tick minor 1 
@ yaxis ticklabel start type spec 
@ yaxis ticklabel start -2 
@ zeroxaxis bar on 
@ zeroxaxis bar linestyle 3 
    0.0000 1.08899 
    0.1161 0.94107 
    0.1056 0.54611 
    0.1033 0.73843 
    0.0987 1.06740 
    ................. 
    0.1081 0.90706 

:1を記録します異なるログ内の異なる文字列番号を使用しますが、その構造は同じで、数字の2列の文字列の数も同じです)。

2.23088 1.08899 
2.19816 0.94107 
2.26237 0.54611 
2.28405 0.73843 
2.26499 1.06740 

は私が

paste log1.txt log2.txt | awk '/^[^;&@#]/{print $2, $4}' > result.log 

経由でそれを行うために使用されるが、時にはそれが(間違った文字列がない取る:古い形式の新しいログを生成するので、(2本の与えられた丸太のために以下の実施例参照)文字列が@で始まるヘッダーからの2番目のログからのもの)、結果のログには間違いが含まれています。 like

私はそれを修正するための提案に感謝します!

あなたはこのawk使用することができますグレブ

答えて

2

awk 'NF != 2 || !/^[0-9. \t]+$/{next} 
    NR==FNR{a[++i]=$2; next} {print a[++j], $2}' file1 file2 

2.23088 1.08899 
2.19816 0.94107 
2.26237 0.54611 
2.28405 0.73843 
2.26499 1.06740 
2.20825 0.90706 
+0

をこれは数字の最初の行からのみ印刷値に思えます。 –

+1

はい、私の更新された答えを今確認してください。 – anubhava

+0

@ user3470313:これはあなたのために機能しましたか? – anubhava

関連する問題