2017-04-19 33 views
0

我的操作系統是Ubuntu的14.04,這裏是我的代碼:我有一個文件dealling:由外殼OUTPUT.TXT但我不知道爲什麼我的代碼無法讀取第一行

while read line 
do 
    awk '{split($0,a,",");print a[6],"qid:"NR,"1:"a[1],"2:"a[2],"3:"a[3],"4:"a[4],"5:"a[5]}' 
done < output.txt 

我output.txt的是:

0.24056906798291974,0.2640402789853635,-0.15613242425814397,0.27656222925649837,0.24663378435409408,0 
-0.16397532884934443,-0.08192444714849861,-0.07868578524120746,-0.13202790903354927,-0.5865884600854129,2 

和我的輸出是

qid:1 1:-0.16397532884934443 2:-0.08192444714849861 3:-0.07868578524120746 4:-0.13202790903354927 5:-0.5865884600854129 
qid:2 1:-0.6359437918203192 2:-0.8776433172563813 3:-0.2684300508327019 4:-0.7212267316402121 5:0.24663378435409408 
qid:3 1:0.10572093570549834 2:0.09105791591843243 3:-0.1445154284056035 4:0.024894390454657443 5:0.24663378435409408 

第一行已經消失。我找不到爲什麼,有什麼想法?

+0

請格式化你的問題有點 – 2017-04-19 16:33:35

回答

2
while read line; do 
    awk '{...}' 
done < output.txt 

您首先使用read line來讓shell讀取一行輸入。 發生這種情況後,您正在運行awk,它沒有文件名或重定向,因此它從相同的輸入中讀取。 awk直到文件結束,退出,循環重複,並且由於輸入文件在結尾處,下一個read返回一個假值,並且循環中斷。

你可能想要的是隻是讓awk讀取文件本身:

awk '{...}' output.txt 
+0

OMG我解決了使用你的建議這個問題!!!!,這個問題困擾了我3天...非常感謝你! (我是shell中的noob) – Meepo

相關問題