ループ内の.tsvファイルの先頭に列を追加しますか?

ループ内の.tsvファイルの先頭に列を追加しますか?

こんにちは。使用中にいくつかの問題が発生しました。アッループによって生成された.tsvファイルの先頭に列を追加します。

私のコードは次のとおりです(残りのループは無視できます)。

while IFS= read -r line
do
curl *URL.org* > ./folder/$line.tsv
sleep 60
awk '{print "$line\t" $0}' ./folder/$line.tsv > $line.tabbed
done < ./folder/<filetoread>.txt

したがって、デフォルトでは、curlコマンドでtsvファイルを生成し、$ line変数を使用してファイルを生成するために使用するループがあります。読み取ったファイルは、単一の単語識別子のリストにすぎません。

RUIAHT48
RUIAHT49
etc. 

使えると思いました。アッこの$line変数を追加して、新しく作成された各ファイルに新しい列を作成します。

awkコマンドの前に出力されます。

$line  col1 col2  col3  col4    col5
$line  CLV_M   19     25    False   False
$line  CLV_P   59     63    False   False
$line  DEG_N   1      3     False   False
$line  DOC_C   10     14    False   False

希望の出力

new      col1   col2    col3    col4    col5
<value>  CLV_M  19      25      False   False
<value>  CLV_P  59      63      False   False
<value>  DEG_N  1       3       False   False
<value>  DOC_C  10      14      False   False

新しい列の値はすべて同じですが、リテラル "$line"の代わりに実際の値があります。ここで私はどこで間違っていますか?実際にawkや他の簡単なコマンドを使用する必要がありますか?

ありがとうございます:)

ベストアンサー1

awkスイッチを使用するには変数を渡す必要があります-v

while IFS= read -r line
do
    curl *URL.org* > "./folder/$file.tsv"
    sleep 60
    awk -v line="$line" '{ OFS = "\t"; print line,$0}' "./folder/$line.tsv" > "$line.tabbed"
done < ./folder/<filetoread>.txt

\tOPのように出力に追加することができますが、OFS私はawk

また、何をしているのかよくわかりませんが、これはどのように$file.tsv使用されていないようですか?私の考えにはそれがありますか$line.tsv

おすすめ記事