linux sed +支持文件中的键和值不存在的情况

cgvd09ve  于 2023-05-06  发布在  Linux
关注(0)|答案(1)|浏览(148)

下面是一个简短的sed示例,说明如何替换“=”分隔符之后的值

sed -i "/num.replica.fetchers/s/=.*$/=$num_cpu/" kafka.configuration

当下面的键和瓦尔m1n1x存在于文件中时,上述sed示例是相关的

#section A
num.replica.fetchers = 12

但如果文件中不存在“num.replica.fetchers = 12”,则sed将不执行任何操作
所以我只是想知道我们是否可以改进sed,以便在匹配行“#section A”之后添加键和值“num.replica.fetchers = 12”,以防文件中不存在键
因此,是否有可能改进我的sed,以便支持密钥不存在的情况,在这种情况下,只需在匹配行#section A之后添加num.replica.fetchers = 12

jhkqcmku

jhkqcmku1#

是的,你可以(我没有测试过下面的代码):

# ensure #section A exists in the file:
if ! grep -q '^#section A' kafka.configuration; then
  echo '#section A' >> kafka.configuration
fi

# then append to it (next line) your config line:
num_cpu=32
if grep -q '^num.replica.fetchers' kafka.configuration; then
  sed -i "/num.replica.fetchers/s/=.*$/= $num_cpu/g" kafka.configuration
else
  sed -i "/#section A/a num.replica.fetchers = $num_cpu" kafka.configuration
fi

您还可以使用grep来检查#section A之后是否有匹配项(在接下来的几行中)

相关问题