2015-10-06 136 views
0

我有兩個文件,即timedata.txt和veldata.txt。以下是時間數據文件中的示例數據。兩個txt文件中提取數字數據,並將其寫入到一個dat文件

Time = 0 
Time = 0.000112 
Time = 0.000224 
Time = 0.000336 
Time = 0.000448 
Time = 0.00056 
Time = 0.000672 
Time = 0.000784 
Time = 0.000896 
Time = 0.001008 
Time = 0.00112 

和之後是veldata.txt樣本數據

Average of volScalarField over patch OUTFLOW[0] = 0 
Average of volScalarField over patch OUTFLOW[0] = 7.54999 
Average of volScalarField over patch OUTFLOW[0] = 7.67539 
Average of volScalarField over patch OUTFLOW[0] = 7.81389 
Average of volScalarField over patch OUTFLOW[0] = 7.83651 
Average of volScalarField over patch OUTFLOW[0] = 7.85014 
Average of volScalarField over patch OUTFLOW[0] = 7.87054 
Average of volScalarField over patch OUTFLOW[0] = 7.87814 
Average of volScalarField over patch OUTFLOW[0] = 7.87423 
Average of volScalarField over patch OUTFLOW[0] = 7.87499 
Average of volScalarField over patch OUTFLOW[0] = 7.8768 

我需要從這兩個文件中的數字數據,並將其合併到一個dat文件,有一列隨着時間的數據和其它列作爲速度數據。因此,我可以使用gnuplot來繪製這些值。

期望的解決方案是這樣的:

0   0 
0.000112 7.54999 
0.000224 7.67539 
0.000336 7.81389 
0.000448 7.83651 

等等....

我想寫使用bash,這樣我可以自動化處理的腳本。對於使用linux和bash腳本來說是新的,因此我不知道很多選項。

任何幫助將受到歡迎。謝謝

+0

請添加所需輸出到你的問題。 – Cyrus

+0

當然..謝謝你的回覆 –

回答

4

awk來救援!

paste <(awk '{print $NF}' file1) <(awk '{print $NF}' file2) 

如果需要兩個以上的文件,或許這

$ p() { awk '{print $NF}' $1;}; paste <(p file1) <(p file2) 

這個生成的製表符分隔欄,你可以把它更好用的管道,以column

$ p() { awk '{print $NF}' $1;}; paste <(p file1) <(p file2) | column -t 

將導致

0   0 
0.000112 7.54999 
0.000224 7.67539 
0.000336 7.81389 
0.000448 7.83651 
0.00056 7.85014 
0.000672 7.87054 
0.000784 7.87814 
0.000896 7.87423 
0.001008 7.87499 
0.00112 7.8768 
+0

謝謝你的回覆,但兩列數據之間沒有相等的間距。我們能改正這一點嗎? –

+0

請參閱更新。 – karakfa

+0

完美,也很簡單!我有個問題。不僅是AWK使用僅從文件中獲取數據,或將其與數據終端工作也 –

3

awk命令得到這個輸出:

awk -v OFS='\t' 'FNR==NR{a[FNR]=$NF; next} {print a[FNR], $NF}' timedata.txt veldata.txt 

要獲得表格格式化輸出使用printf

awk 'FNR==NR{a[FNR]=$NF; next} {printf "%-12s\t%s\n", a[FNR], $NF}' time.txt veldata.txt 

0   0 
0.000112 7.54999 
0.000224 7.67539 
0.000336 7.81389 
0.000448 7.83651 
0.00056 7.85014 
0.000672 7.87054 
0.000784 7.87814 
0.000896 7.87423 
0.001008 7.87499 
0.00112 7.8768 
+1

謝謝你回答我。它完美的作品。我有個問題。 awk僅用於從文件中獲取數據,或者與終端中的數據一起使用。 –

+0

awk適合處理分成行列設置的數據。這些數據可以直接來自文件或其他命令的輸出。所以你也可以使用'command1 | command2 | AWK「{...}」' – anubhava

+0

解釋:)謝謝 –

相關問題