sed 粘贴到变量中的模式字符串下方
sed paste below pattern string in variable
我正在寻找将变量粘贴到匹配模式下方的解决方案
我有一半的解决方案,但无法完成我的脚本......
我使用此脚本的目的是将变量 "OSI" 自动粘贴到正确的月份下方。
/var/etc/osi.conf
###Jan###
###Feb###
###Mar###
###Apr###
###May###
###Jun###
###Jul###
###Aug###
###Sep###
###Oct###
###Nov###
###Dec###
脚本:
#!/bin/bash +x
DATE=$(date | awk '{print }')
DATE2=$(date +%Y-%m-%d -d "3 year")
read -r -p "USERNAME: " USERNAME
read -r -p "PASSWORD: " PASSWORD
OSI="
"$USERNAME"
"$PASSWORD"
"$DATE2"
Fail 1
eth0"
sed -i 's/\#\#\#"$(date | awk '{print }')"\#\#\#/$OSI/g' /var/etc/osi.conf
///###编辑###
您可以在下面找到结果。因为创作月份是三月和。因此,创建的用户必须低于###Mar###
var/etc/osi.conf
###Jan###
###Feb###
###Mar###
"$USERNAME"
"$PASSWORD"
"$DATE2"
Fail 1
eth0"
###Apr###
###May###
###Jun###
###Jul###
###Aug###
###Sep###
###Oct###
###Nov###
###Dec###
我修改了,所以我不必输入一些名字,不要在 /etc 中乱搞,不要对语言环境和日期有问题,并保持 osi.conf 不变以供测试:
DATE=$(LC_ALL=C date | awk '{print }')
DATE2=$(LC_ALL=C date +%Y-%m-%d -d "3 year")
USERNAME="Hein"
PASSWORD="53cr3t"
echo -e "$USERNAME\n$PASSWORD\n$DATE2\nFail 1\neth0" > tmp.txt
sed "/$DATE/rtmp.txt" osi.conf
结果:
###Jan###
###Feb###
###Mar###
Hein
53cr3t
2021-03-13
Fail 1
eth0
###Apr###
###May###
###Jun###
###Jul###
###Aug###
###Sep###
###Oct###
###Nov###
###Dec###
如果您需要在某些值周围加上引号,请尝试屏蔽或阅读参考资料。
这里的关键点是 sed 的能力 (Gnu-sed) r:=读取文件并按特定模式或行号输入它。
我正在寻找将变量粘贴到匹配模式下方的解决方案 我有一半的解决方案,但无法完成我的脚本...... 我使用此脚本的目的是将变量 "OSI" 自动粘贴到正确的月份下方。
/var/etc/osi.conf
###Jan###
###Feb###
###Mar###
###Apr###
###May###
###Jun###
###Jul###
###Aug###
###Sep###
###Oct###
###Nov###
###Dec###
脚本:
#!/bin/bash +x
DATE=$(date | awk '{print }')
DATE2=$(date +%Y-%m-%d -d "3 year")
read -r -p "USERNAME: " USERNAME
read -r -p "PASSWORD: " PASSWORD
OSI="
"$USERNAME"
"$PASSWORD"
"$DATE2"
Fail 1
eth0"
sed -i 's/\#\#\#"$(date | awk '{print }')"\#\#\#/$OSI/g' /var/etc/osi.conf
///###编辑###
您可以在下面找到结果。因为创作月份是三月和。因此,创建的用户必须低于###Mar###
var/etc/osi.conf
###Jan###
###Feb###
###Mar###
"$USERNAME"
"$PASSWORD"
"$DATE2"
Fail 1
eth0"
###Apr###
###May###
###Jun###
###Jul###
###Aug###
###Sep###
###Oct###
###Nov###
###Dec###
我修改了,所以我不必输入一些名字,不要在 /etc 中乱搞,不要对语言环境和日期有问题,并保持 osi.conf 不变以供测试:
DATE=$(LC_ALL=C date | awk '{print }')
DATE2=$(LC_ALL=C date +%Y-%m-%d -d "3 year")
USERNAME="Hein"
PASSWORD="53cr3t"
echo -e "$USERNAME\n$PASSWORD\n$DATE2\nFail 1\neth0" > tmp.txt
sed "/$DATE/rtmp.txt" osi.conf
结果:
###Jan###
###Feb###
###Mar###
Hein
53cr3t
2021-03-13
Fail 1
eth0
###Apr###
###May###
###Jun###
###Jul###
###Aug###
###Sep###
###Oct###
###Nov###
###Dec###
如果您需要在某些值周围加上引号,请尝试屏蔽或阅读参考资料。
这里的关键点是 sed 的能力 (Gnu-sed) r:=读取文件并按特定模式或行号输入它。