注:我使用的是OS X重新排列數據到指定的行長度
我有一個數據文件,它是隻是數字的一個長長的清單,有一個單獨的行中的每個條目:
23
28
26
14
...
我需要長期的37條記錄/字段重新排列行數據:
23 28 26 14 1 2 3 4 5 6 7 8 9 2 4 5 6 9 4 8 7 6 3 2 5 9 4 1 2 5 7 8 9 4 6 1 2
5 8 6 4 3 5 23 28 26 14 1 2 3 4 5 6 7 8 9 2 4 5 6 9 4 8 7 6 3 2 5 9 4 1 2 5 7
...
這是我試過的代碼:
awk '{
for(i=1;i<=NF;i+=1) {
if(i%37 != 0) printf $i" ";
else printf "$i\n"
}
}'
input.txt > output.txt
第一printf $i" "
似乎是工作,但是有些事情似乎是錯誤的,因爲條件不管我告訴它在else
聲明打印不打印。也許只是一個語法疏忽?
有趣的是,當我只需運行:
awk '{for(i=1;i<=NF;i+=1) printf $i" "}' input.txt > output.txt
結果文件,可將數據的一些到37的記錄長度行,但有的還更長......會是這樣一個結果數據中的一些神器? (數據已經通過一些排序/組織功能運行。)
您問題的癥結在於您使用了「記錄/字段」一詞。他們不一樣,你對這種差異感到困惑。一個文件由記錄組成。每條記錄都由字段組成。默認的記錄分隔符是換行符。默認字段分隔符是一系列連續的空格。所以,你的輸入文件包含37個記錄,每個記錄包含1個字段。你的腳本正在比較'NF'(當前記錄中的字段數)和37。看到問題了嗎? –