Tenho um arquivo (temp_4n.in) com as seguintes linhas:
5 C 172.0696
5 C 135.6942
5 H 30.9062
5 H 31.8124
12 H 31.0377
12 O 293.0612
12 H 32.4678
Tenho um script (testsc.txt) que vai extrair o último H das linhas que começam com um determinado número que irei alterar regularmente:
grep $'^${mold}\tH' temp_4n.in | tail -1 > temp_5n.in
Porém, quando executo o script (querendo, por exemplo, a linha começando com 12) utilizando o seguinte comando, ele falha:
qsub -v mold=12 ./testsc.txt
Acho que isso tem algo a ver com o primeiro '$' no comando grep sendo considerado um parâmetro e sendo substituído erroneamente. Alguém pode me ajudar a descobrir qual é o problema?
qsub -v varname=value
definevarname
para ovalue
fornecido no ambiente do trabalho enviado.No script que você envia, você usa esse valor em um
grep
comando, mas a string que contém a variável é colocada entre aspas simples, impedindo que o shell a expanda.Em vez disso, seu script deve estar usando
A inicial
$
do seu código ($'...'
) não é necessária aqui e, em vez disso, usamos[[:blank:]]
para corresponder a um espaço ou tabulação.Uma alternativa seria usar
awk
no seu script:Isso usa comparações de strings (não expressões regulares) para testar a primeira e a segunda coluna e, quando uma linha correspondente é encontrada, a linha inteira é salva na variável
this
. No final, o último valor dethis
é impresso. Isso substitui ambos degrep
etail
.