下面是一個示例的數據集(10個COLS,2行):bash的for循環不循環(AWK時,bash,LINUX)
8 1 4 10 7 9 2 3 6 5 0.001475 10.001 20.25 30.5 40.75 51 61.25 71.5 81.75 92
我想輸出十個文件爲每個數據集。每個文件將包含第二行中的唯一值,並且文件名將包含第一行中相應列的值。
(例如:含有0.001475一個文件,叫foo_bar_8.1D
見下面我的代碼,用於使用下列數據集:
OrderTimesKC_voxel_tuning_1.txt OrderTimesKC_voxel_tuning_2.txt OrderTimesKC_voxel_tuning_3.txt OrderTimesKC_voxel_tuning_4.txt OrderTimesKC_voxel_tuning_5.txt
腳本:
subj='KC'
for j in {1..5}; do
for x in {1..10}; do
a=$(awk 'FNR == 1 {print $"$x"}' OrderTimes"$subj"_voxel_tuning_"$j".txt) #a == row 1, column x
b=$(awk 'FNR == 2 {print $"$x"}' OrderTimes"$subj"_voxel_tuning_"$j".txt) #b == row 2, column x
echo $b > voxTim_"$subj"_"$j"_"$a".1D
done
done
的目前輸出的文件有:
voxTim_KC_1_8?1?4?10?7?9?2?3?6?5.1D voxTim_KC_2_8?1?4?10?7?9?2?3?6?5.1D voxTim_KC_3_8?1?4?10?7?9?2?3?6?5.1D voxTim_KC_4_8?1?4?10?7?9?2?3?6?5.1D voxTim_KC_5_8?1?4?10?7?9?2?3?6?5.1D
這些包含每個文件十個值,表明它沒有正確循環。
我要的是:
voxTim_KC_1_1.1D, voxTim_KC_1_2.1D, voxTim_KC_1_3.1D..... voxTim_KC_2_1.1D, voxTim_KC_2_2.1D, voxTim_KC_2_3.1D..... and so on..
謝謝!
你的循環是不是做了什麼你覺得是因爲你與外殼混淆AWK和另外誤解shell引用規則,但更重要的是不管它是你正在嘗試做的,你的做法是錯誤解釋你正在嘗試做什麼以及一些具體的,可測試的樣本輸入和期望的輸出,我們可以幫助你。如果/當你得到一個答案,告訴你如何讓現有的腳本產生你期望的輸出,請記住這是錯誤的方法。 –