Проблема Sed со сценариями

Я пытаюсь запустить скрипт с использованием sed i, работающего следующим образом

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

, но говорит мне следующее:

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

Пожалуйста, я благодарен за любую помощь в этом вопросе. ..

Спасибо, Пабло.

0
задан 5 November 2013 в 19:41

2 ответа

Оба ваших sed выражения выглядят некорректно ... вот первое:

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

Я бы сказал, что вы на самом деле ищете:

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

И измените второе один аналогично.

sed -n "s/$awk3/$awk4/p" first > atoms
0
ответ дан 5 November 2013 в 19:41
  • 1
    Даже после этого я в состоянии просмотреть другой пользовательский корневой каталог и все содержание в нем: ( – Dave Ranjan 30 April 2017 в 10:42

unknown command ',' означает, что либо $awk1, либо $awk3 пусто. Вместо номера строки первое, что видит sed - это запятая.

Вам нужно что-то сделать, если «run.adf» не не содержит / type = fde / или / ATOMS /

Я настоятельно рекомендую использовать лучшие имена переменных: «awk1» делает не сообщайте читателю, что он содержит номер строки.

Ваше цитирование может быть более читабельным: sed -n "${awk1},${awk2}p"

0
ответ дан 5 November 2013 в 19:41

Другие вопросы по тегам:

Похожие вопросы: