【发布时间】:2022-01-18 13:50:15
【问题描述】:
在kafka.properies 文件中
more /home/kafka.properies
log.retention.hours=12
delete.topic.enable=true
leader.imbalance.check.interval.seconds=300
leader.imbalance.per.broker.percentage=10
log.dir=/var/kafka/data1
我们要替换
log.dir=/var/kafka/data1
或任意组合
log.dir=/var/kafka/data1,/var/kafka/data2, ......
与 $line
何时:
echo $line
/var/kafka/data1,/var/kafka/data2,/var/kafka/data3,/var/kafka/data4,/var/kafka/data5,/var/kafka/data6,/var/kafka/data7,/var/kafka/data8
所以我们做了以下事情:
sed "s/^log.dir.*/\$line/g" /home/kafka.properies
或
sed 's/^log.dir.*/$line/g' /home/kafka.properies
但我们得到了
log.retention.hours=12
delete.topic.enable=true
leader.imbalance.check.interval.seconds=300
leader.imbalance.per.broker.percentage=10
$line
而不是得到
log.retention.hours=12
delete.topic.enable=true
leader.imbalance.check.interval.seconds=300
leader.imbalance.per.broker.percentage=10
log.dir=/var/kafka/data1,/var/kafka/data2,/var/kafka/data3,/var/kafka/data4,/var/kafka/data5,/var/kafka/data6,/var/kafka/data7,/var/kafka/data8
我哪里错了? ,这种替换的正确方法是什么? (与 sed 或 perl 一个衬里或其他)
【问题讨论】:
-
sed "s~^log\.dir.*~log.dir=$line~"(demo) -
我得到 log.dir/var/kafka/data1,/var/kafka/data2,/var/kafka/data3,/var/kafka/data4,/var/kafka/data5,/var /kafka/data6,/var/kafka/data7,/var/kafka/data8 (但没有“=”
-
因为你没有加
=。