簡體   English   中英

如何按順序提取文本並將其用作bash腳本中的輸入

[英]How to extract text in order and use as input in bash script

我是新來的,還有bash腳本。 是否可以創建一個腳本來提取文本,以便用作另一個程序的輸入。
我的輸入文件($ in_put)就是這種格式。 這些樣本是來自不同測序運行的雙端文件:
sample_1 ab
sample_2 cd
sample_3 ef
我嘗試使用的程序是Trimmomatic。 我嘗試了范圍,因為那是我知道的bash中唯一可以按順序運行的循環。 這是我所做的:
smpl_no=3
test_val=$(for (( b=1; b<=$smpl_no; b++)); do grep ple_$b $in_put | awk '{print $2, $3}'; done)
但是,在我用echo $test_val檢查的地方,它一起給了我abcdef 我想將成對的值提取為abcdde ,並將它們轉換為Trimmomatic的變量。

將來我也將有更多樣本作為輸入。 解決此問題的最佳方法是什么?

我沒有使用Trimmomatic,但是基於此doc頁面 ,我認為您需要將afa作為單獨的參數列出,對嗎?

smpl_no=3
elems=()   # make an array
for(( b=0; b<$smpl_no; ++b)); do   # arrays start at 0

   read -r _ elem1 elem2 < <(grep ple_$b $in_put)
       # Get, e.g., "a" and "b" into $elem1 and $elem2
   elems+=("$elem1" "$elem2")
       # Save them in an array

done

java -jar trimmomatic-0.35.jar PE -phred33 "${elems[@]}" ILLUMINACLIP ... <whatever else>
    # each element as a separate parameter ^^^^^^^^^^^^^

如果只需要一對,則每個對可以具有"${elems[$idx]}""${elems[$idx + 1]}"對於idx = idx ...。

您可以通過一個read調用來填充更多var:

while read -r sample param1 param2; do
   echo "Sample ${sample}"
   echo "Calling Trimmomatic ${param1} ${param2}"
   trimmomatic "${param1}" "${param2}"
done < "${in_put}"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM