【发布时间】:2020-05-22 06:10:44
【问题描述】:
我想对多个 ifcg 文件执行 sed,但 'eth$i' 不会增加,每个文件中都有 eth0。 我的目标是在 eno1 eth0 里面,在 enps0 eth1 里面......
如果有人能帮忙,非常感谢
ls test
eno1 enps0 enps1 enps2 enps3 lo
cat test/eno1
name=eno1
device=eno1
for NAME in $(ls test/ | grep -v lo | sort)
do
for (( i=0; i<$(ls test/ | grep -v lo | wc -l); i++ ))
do
sed -i "s/${NAME}/eth${i}/g" test/$NAME
done
done
在决赛中我想拥有
cat test/eno1
name=eth0
device=eth0
cat test/enps0
name=eth1
device=eth1
cat test/enps1
name=eth2
device=eth2
...
谢谢
【问题讨论】:
-
你想要的输出是什么?
-
在外循环的第一次迭代中,NAME 设置为
eno1。然后在内部循环中对文件eno1执行 5 次迭代,i绑定到 0..4。在第一次内部迭代中,您将文件eno1中的字符串eno1替换为eth0。在下一次迭代中(i等于 1),您尝试将每个eno1替换为eth1,但此文件中不再存在eno1。因此它坚持eth0。您可以通过在sed命令之后执行cat test/$NAME轻松验证这一点。