[英]sed cannot find file
我在bash脚本中使用sed来更改一些变量值。 这些变量是不同类型的混合,还包括一些特殊字符:
sed -i -e "s/NPROC=[^,]*,/NPROC=$NPROC/" \
-e "s/NFRPOS=[^,]*,/NFRPOS=$OUTPUTFREQ/" \
-e "s/NFRHIS=[^,]*,/NFRHIS=$OUTPUTFREQ/" \
-e "s/COSP_OUTPUT_FREQUENCY=[^,]*,/COSP_OUTPUT_FREQUENCY=$OUTPUTFREQ/" \
-e "s/TSTEP=[^,]*,/TSTEP=$TSTEP/" \
-e "s/NCEXTR=[^,]*,/NCEXTR=$NCEXTR/" \
-e "s/NVXTR2=[^,]*,/NVXTR2=$NVXTR2/" \
-e "s/NVEXTR=[^,]*,/NVEXTR=$NVEXTR/" \
-e "s/COSP_NLEVELS=[^,]*,/COSP_NLEVELS=$NLEV/" \
-e "s/NVEXTRAGB=[^,]*,/$NVEXTRAGB/" \
-e "s/NVEXTR2GB=[^,]*,/$NVEXTR2GB/" \
-e "s/NFPLEV=[^,]*,/NFPLEV=$NFPLEV/" \
-e "s/CNMEXP=[^,]*,/CNMEXP=\"${EXPID}\"/" \
-e "s/LFPOS=[^,]*,/NFPOS=2/" \
-e "s/NLAT=[^,]*,/NLAT=$NLAT/" \
-e "s/NLON=[^,]*,/NLON=$NLON/" \
$NAMELIST
+ sed -i -e 's/NPROC=[^,]*,/NPROC=10/' ' '
sed: can't read : No such file or directory
但是,我不断收到错误消息,找不到文件$ NAMELIST。 该文件确实在同一目录中退出,并且名称没有错误。 添加全路径也无济于事。 所以我想知道这个sed命令出了什么问题。
第一个反斜杠后有一个空格。 您不是转义换行来继续该命令,而是转义了空格,因此它认为要编辑的文件名是单个空格。
确保反斜杠是每一行的最后一个字符。
无论出于何种原因,您的NAMELIST变量都不会被扩展。 Sed正在寻找一个文件名为“ $ NAMELIST”的文件,而不是“ /the/path/to/namelist.txt” ...
检查设置NAMELIST变量的任何逻辑。
另一个解释是, NAMELIST
确实包含短语“无法读取”。 白衣:
$ NAMELIST="can't read "
$ sed -e 1d "$NAMELIST"
sed: can't read : No such file or directory
您如何设置NAMELIST
?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.