我有
param1='123'
我想
param1='123'
param2=123
其中 123 将在我想要运行这个文件的文件之间发生变化。
我可以使用获取 param2sed -i "s/param1=\([0-9]\+\)/param2='\1'/g" '{}' \;
但是然后我会丢失 param1。
我也可以使用附加行 param2 sed -i "param1='\([0-9]\+\)';/a \param2=\1;
,但模式无法识别,最终我得到param2=1
有没有办法将这两个命令结合起来,或者用另一种方法来实现这一点?
非常感谢!
答案1
您可以捕获整个匹配以及数字组,然后在输出中指定两者:
echo "param1='123'" | sed "s/\(param1='\([0-9]\+\)'\)/\1\nparam2=\2/g"
答案2
这里还有一些选项:
Perl
echo "param1='123'" | perl -lpe 'print; s/(.+=).(\d+)./$1$2/'
awk
echo "param1='123'" | awk -F"[ =']" '{print $0"\n"$1"="$3}'
壳
echo "param1='123'" | while read l; do echo "$l"; echo "${l//\'/}"; done
更简单
sed
echo "param1='123'" | sed "p;s/'//g"