sed problema com scripts

0

Estou tentando executar um script usando sed eu estou correndo assim

for et in   1 # 2 3
    do

      if [ -d ET$et ]; then rm -rf ET$et; fi

        mkdir ET$et
        cd ET$et
        cp  $home/step_$i/FDE/diabatA/run.adf .
        cp  $home/step_$i/FDE/diabatA/mas$i.xyz .

        awk1='awk '/type=fde/{print NR }' run.adf | head -1'
        awk2='$(echo "$a+379" | bc -l )'
       sed -n "$awk1,"$awk2"p" run.adf > first

        awk3='awk '/ATOMS/{print NR +1}' first'
        awk4='cat mas$i.xyz | wc -l'
        awk4=$( echo "$awk4-1" | bc -l )
        awk5='awk "/ATOMS/{print NR +"${awk4}" }" run.adf'
        sed -n "$awk3,"$awk4"p" first > atoms

        par=$( echo "$awk4-99" | bc -l )
        rho1=$(cat atoms | head -34 )
        rho2=$(cat atoms | head -64 | tail -31)
        rho3=$(cat atoms | head -97 | tail -33)
        rhoall=$(cat atoms | tail -${par} )

        echo -e "$rho1\n$rho2\n$rhoall" > eje
done

mas está me dizendo isso:

(standard_in) 1: syntax error
sed: -e expression #1, char 6: unexpected ','
sed: -e expression #1, char 1: unknown command: ','

Por favor, agradeço qualquer ajuda com esta questão ...

Obrigado Pablo

    
por Pablor 05.11.2013 / 16:35

2 respostas

1

As expressões sed parecem malformadas ... eis a primeira:

sed -n "$awk1,"$awk2"p" run.adf > first

Eu gostaria de sugerir que você está realmente procurando:

sed -n "s/$awk1/$awk2/p" run.adf > first

E altere o segundo da mesma forma.

sed -n "s/$awk3/$awk4/p" first > atoms
    
por Oli 05.11.2013 / 16:45
1

O unknown command ',' significa que $awk1 ou $awk3 está vazio. Em vez de um número de linha, a primeira coisa que o sed vê é uma vírgula.

Você precisa fazer algo se "run.adf" não não contiver / type = fde / ou / ATOMS /

É altamente recomendável usar nomes de variáveis melhores: "awk1" não transmite ao leitor que ele contém um número de linha.

Suas citações podem ser mais legíveis: sed -n "${awk1},${awk2}p"

    
por glenn jackman 05.11.2013 / 18:26