我有以下脚本的模板,我需要为每个案例插入不同的PARAM
值。
case $1 in
1)
export PARAM=
;;
2)
export PARAM=
;;
3)
export PARAM=
;;
esac
我刚刚找到了如何为第一个案例PARAM
插入值的示例:
sed -i '/export PARAM=/{s//export PARAM=1212212121/;:a;n;ba}' file
但是如何处理案例2和3?
答案 0 :(得分:0)
使用awk
:
awk -v v="1212212121" -v n=2 '/Param/{c++} c==n-1{$(NF)+=" "v}1' file
awk -v v="1212212333" -v n=3 '/Param/{c++} c==n-1{$(NF)+=" "v}1' file
依旧......
说明:
/Param/{c++}
时,c
会递增一个计数器/Param/
。c==n-1
检查c
是否具有所需的值,并添加值1
始终 true 。 awk
将打印所有行。-v v="1212212121" -v n=2
将变量v
和n
传递给脚本。答案 1 :(得分:0)
这可能适合你(GNU sed):
n=2 v=11212212121
sed -ri '/export PARAM=/{x;s/^/x/;/x{'$n'}/!{x;b};x;s/(export PARAM=).*/\1'$v'/;:a;n;ba}' file
将计数器保留在保留空间中,如果计数器符合您的预期,请替换然后打印出文件的其余部分。