1

我有以下脚本的模板,我需要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,我该怎么做呢?

4

2 回答 2

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

在保留空间中保留一个计数器,如果计数器符合您的预期,请替换并打印出文件的其余部分。

于 2017-03-16T00:47:40.757 回答
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总是如此awk将打印所有行。
  • -v v="1212212121" -v n=2将变量传递vn脚本。
于 2017-03-15T12:47:17.443 回答