2011-09-23 36 views
0

我是使用awk的新手,而且我遇到了一個問題。如何在unix中使用awk獲得所需的輸出

我有一個文件:

startpoint--A 
endpoint--B 
startpoint--C 
endpoint--D 

我想作爲在柱中期望的,使得下起始點,我所有的起始變量(A,C)和下端點的所有端部可變因素的輸出(B ,d)。例如:

startpoint endpoint 
A   B 
C   D 

我該怎麼用awk來完成這項工作?

+0

請詳細說明你的問題。你想要輸出什麼確切的形式? – brc

+0

我已經編輯了您的問題表單,但仍然很難弄清楚您要問什麼。另外,請使用完整的句子,並儘可能使用適當的語法和拼寫。 –

回答

1

推測您的數據文件交替出現startpointendpoint行。在這種情況下,您可以保存最近的startpoint,並在遇到endpoint時將它們打印出來。

$ cat data.txt 
startpoint--A 
endpoint--B 
startpoint--C 
endpoint--D 

$ cat points.awk 
BEGIN { print "startpoint endpoint" } 
$1 == "startpoint" { sp = $3 } 
$1 == "endpoint" { printf "%-12s%s\n", sp, $3 } 

$ awk -F- -f points.awk data.txt 
startpoint endpoint 
A   B 
C   D 
+0

笏這是否推斷awk -F- -f和wat是point.awk腳本推斷 – Sundhar

+0

@Sundhar'-F'告訴awk如何使用字段分隔符。你真的需要在你的問題和意見中更清楚。 –

+0

@Rick im不能使用相同的解決方案爲另一個文件,它不工作唯一的變化是,而不是A B C D我有這樣的事情在每個開始和結束點LVISION_WTAP_INST/LVISION – Sundhar

0

不需要AWK,cutpaste會做:

{ 
    printf "startpoint\tendpoint\n" 
    cut -d '-' -f 3 data.txt | paste - - 
} | column -t 

我認爲你的數據是「格式良好的」,與端點立即啓動點以下。