繁体   English   中英

sed:-e表达式#1,字符7:无终止的s命令

[英]sed: -e expression #1, char 7: unterminated `s' command

port.properties
{
  "port":3006
  "name":"John"
}

changeport.sh

filename="port.properties"
oldport=$(awk -F'"port":|,' '{i=$2;print i}'  "$filename")
read newport
oldport_str="\"port\":$oldport"
newport_str="\"port\":$newport"

sed -i "s/$oldport_str/$newport_str/g" "$filename"

我不知道这个错误。如果您有答案,请告诉我,谢谢

旧值已关闭; 它包含一个不可见的字符(DOS回车吗?)或您未向我们显示的内容。

无论如何,仅使用正则表达式查找旧值以便您可以替换它就不会在这里造成任何意外,因此最简单的解决方法是删除读取旧值的部分。

read newport
sed -i "s/\(\"port\":\).*/\1$newport/" port.properties

某些sed方言在捕获括号之前不需要反斜杠。 在提交任何内容之前,请尝试使用适用于您版本的精确语法。

只需将整个内容更改为简单的内容即可:

filename="port.properties"
read -r newport
awk -v new="$newport" 'BEGIN{FS=OFS=":"} $1~/"port"/{$2=new} 1' "$filename" > tmp &&
mv tmp "$filename"

无论您的文件中的任何字符或读取输入字符串,以上内容都将起作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM