sed 脚本问题

sed 脚本问题

我正在尝试使用 sed 运行脚本,如下所示

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: `,'

请对我针对这个问题提供的任何帮助表示感谢...

谢谢 Pablo

答案1

你们两个的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

答案2

表示unknown command ','$awk1$awk3空。sed 首先看到的不是行号,而是逗号。

如果“run.adf”出现以下情况,你需要采取一些措施不是包含 /type=fde/ 或 /ATOMS/

我强烈建议使用更好的变量名:“awk1”不会向读者传达它包含行号。

您的引用可能更具可读性:sed -n "${awk1},${awk2}p"

相关内容