這裏有一個新人,希望問題有一個簡單的解決方案,但我似乎無法管理。將awk輸出指向變量
所以,我有一大堆我需要使用相同的命令行程序進行處理的文件,並且我正在嘗試編寫一個小的shell腳本來自動執行此操作。我寫了一些將從文本文件中讀取輸入文件名的內容,然後爲每個文件重複該命令。到現在爲止還挺好。我的問題是命名輸出。每個文件都以通用格式「lane_number_bla_bla_bla」命名,並且它們是成對處理的。因此,需要將「lane_1_bla_bla_bla_001」和「lane_1_bla_bla_bla_002」組合成單個輸出文件。爲此,我試圖使用awk從輸入文件的.txt列表中讀取樣本編號,並將其解析爲輸出文件編號。下面是我提出的代碼(注意命令前面的echo語句僅用於測試;它在運行實際程序時被刪除;這不是實際的命令,而是更復雜的,但原則仍然適用):
echo "Which input1 should I use?"
read text
input1=$text
echo "Which input2 should I use?"
read text
input2=$text
echo "How many lines?"
read text
n=$text
for i in $(seq 1 $n)
do
awkinput1=$(awk NR==$i $input1)
awkinput2=$(awk NR==$i $input2)
num=$(awk 'NR==$i{print $2 }' FS="_" $input1)
lane=$(awk 'NR==$i{print $1 }' FS="_" $input1)
echo "command $awkinput1.in > $awkinput1.out && command $awkinput2.in > $awkinput2.out && command cat $awkinput1.out $awkinput2.in > $num-$lane-CAT.out &"
if (($i % 10 == 0)); then wait; fi # Limit to 10 concurrent subshells.
done
當我運行此,無論是$ awkinput領域獲得由適當的文件名的COMAND行更換,但不是$ NUM和$車道領域,其打印什麼。
那麼,我做錯了什麼?我相信這很簡單,但我嘗試了很多不同的方法來格式化相關的awk命令,而且似乎沒有任何工作。我在使用SSH協議的遠程Linux服務器上執行此操作,如果它有所作爲。
非常感謝!
'FS = _'可能需要腳本之前去 – Kevin