Bash

使用文件中的列作為輸出文件變數名

  • December 6, 2019

頭部 testregions.bed

21      15390708       
21      15890068        16388793
21      16390041        16888505
21      16889055        17388185
21      17388731        17886839

我想使用 .bed 文件的每一行作為輸出名,例如:

while readline  
do zip.sh > 21_15390708_ 15889554.zip
           21_16390041-16888505.zip

我讀了一些關於 xargs 能夠做到這一點的資訊。但我堅持如何將每一行輸出到唯一的輸出文件名。

xargs -a testregions.bed -I {} zip inputfile {} >> outputfile_{}.zip

等等。任何幫助深表感謝。

這是一種易於理解的方法,您可以對testregions.bed. 首先,刪除原始文件中的所有空格,testregions.bed並將數字保存到一個新文件中new.txt,如下所示:

cat testregions.bed | tr -d "[:blank:]" > new.txt

然後,您將為您的每一行創建一個新文件,new.txt如下所示:

cat new.txt | while read line do touch "$line".zip done

然後你可以刪除new.txt

rm new.txt

因此,您test.sh創建.zip文件的腳本testregions.bed如下所示:

#!/bin/sh

cat testregions.bed | tr -d "[:blank"]" > new.txt
cat new.txt | while read line
do
       touch "$line".zip
done
rm new

引用自:https://unix.stackexchange.com/questions/555850