Adicionando uma coluna ao início de um arquivo .tsv em um loop?

2

Oi eu estou tendo um pouco de dificuldade ao usar awk para adicionar uma coluna no início de um arquivo .tsv que estou criando dentro de um loop.

Meu código é o seguinte (pode ignorar o resto do loop):

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

Então, basicamente, eu tenho esse loop que estou usando para criar um arquivo tsv a partir de um comando curl, e usando a variável $ line para criar um arquivo com isso. O arquivo lido é simplesmente uma lista de identificadores de palavras únicas;

RUIAHT48
RUIAHT49
etc. 

Eu pensei que poderia usar o awk para acrescentar esta variável $ line para criar uma nova coluna em cada um dos arquivos recém-criados.

Saída antes do comando 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

Saída desejada;

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

Onde a nova coluna é todo o mesmo valor, mas o valor real em vez de literalmente apenas "$ line". Onde estou indo errado aqui? Deveria estar realmente usando o awk ou outro comando de maneira mais simples?

Obrigado :)

    
por daenwaels 06.08.2018 / 13:19

1 resposta

0

Você precisa passar a variável para awk usando a opção -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

Você pode adicionar \t à sua saída como fez no OP, mas eu faria isso usando a opção OFS de awk .

Além disso, não tenho certeza do que você está fazendo, mas você está ciente de que $file.tsv não parece ser usado? Eu acho que deveria ser $line.tsv ?

    
por 06.08.2018 / 14:28

Tags