ファイルの列を出力ファイル変数名として使用する

ファイルの列を出力ファイル変数名として使用する

ヘッドテストエリア。ベッド

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

など。どんな助けでも大変感謝します。

答え1

以下は、次のように使用できるわかりやすい方法です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

関連情報