我有一個腳本從輸入文件中提取文件名,應該讀取每行(文件名)並解壓縮指定的文件,將解壓縮的內容保存爲單個文件。但是,我無法讓我的計數器工作,只是將所有解壓縮的文件放在一個大文件中。計數器在bash腳本
Input file contains a list:
ens/484/59/traj.pdb 0.001353
ens/263/39/traj.pdb 0.004178
ens/400/35/traj.pdb 0.004191
我使用regex /.*?/.*?/
提取,我想解壓縮文件,並命名每個output{1..40}.pdb
- 而不是我得到一個輸出文件:output1.pdb
其中包含40個解壓縮文件中的所有內容。
我的問題是:如何糾正我的櫃檯,以實現所需的命名方案?
#!/bin/bash
file="/home/input.txt"
grep -Po '/.*?/.*?/' $file > filenames.txt
i=$((i+1))
structures='filenames.txt'
while IFS= read line
do
gunzip -c 'ens'$line'traj.pdb.gz' >> 'output'$i'.pdb'
done <"$structures"
rm "$structures"
可能是你打算把'i = $((i + 1))'放在循環中嗎? – mustaccio
是的,你說得對。 – EA00
@ EA00記得雙引號'$ line',否則如果它包含空格,你的代碼將會破壞:'gunzip -c'ens'「$ line」'traj.pdb.gz'>> ...'或者:'gunzip -c「ens $ {line} traj.pdb.gz」>> ...' – andlrc