我有以下文件:( example.txt显示)
我需要编辑文件,主要问题是在文件中的两个已知行之间附加文本
first_line = “)”
second_line =“NIC Hr_Nic(”
例如
需要添加以下内容:
haattr -add RVG StorageRVG -string
haattr -add RVG StorageDG -string
haattr -add RVG StorageHostIds -string
haattr -delete RVG Primary
haattr -delete RVG SRL
haattr -delete RVG RLinks
之间
第一个匹配线“)”
和
第二个匹配行“NIC Hr_Nic(”
如example.txt文件中所述
如何通过sed来做到这一点...(如果它很困难,也可以使用perl)
备注(sed需要获得两个参数 第一个参数是第一个匹配行(first_line arg) 第二个参数是第二个匹配行(second_line arg)
example.txt文件:
group Hr_Grp (
SystemList = { london1 = 0, london2 = 1 }
AutoStartList = { london1, london2 }
)
NIC Hr_Nic (
Device = qfe0
)
IP Hr_Ip(
Device = qfe0
Address = "1.1.1.1" // Virtual IP
)
DiskGroup Hr_Dg(
DiskGroup = hrdg
)
RVG Hr_Rvg (
RVG = hr_rvg
DiskGroup = hrdg
)
Hr_Rvg requires Hr_Dg
Hr_Rvg requires Hr_Ip
Hr_Ip requires Hr_Nic
sed编辑后的文件示例:
group Hr_Grp (
SystemList = { london1 = 0, london2 = 1 }
AutoStartList = { london1, london2 }
)
haattr -add RVG StorageRVG -string
haattr -add RVG StorageDG -string
haattr -add RVG StorageHostIds -string
haattr -delete RVG Primary
haattr -delete RVG SRL
haattr -delete RVG RLinks
NIC Hr_Nic (
Device = qfe0
)
IP Hr_Ip(
Device = qfe0
Address = "1.1.1.1" // Virtual IP
)
DiskGroup Hr_Dg(
DiskGroup = hrdg
)
RVG Hr_Rvg (
RVG = hr_rvg
DiskGroup = hrdg
)
Hr_Rvg requires Hr_Dg
Hr_Rvg requires Hr_Ip
Hr_Ip requires Hr_Nic
答案 0 :(得分:0)
尝试一下:
text=$(<file)
sed -e '/[[:blank:]]*)[[:blank:]]*/{:a;n;/NIC Hr_Nic (/i\' -e "$text" -e 'ba}'
我正在使用i
进行插入和变量,因为r
(读取文件)命令在当前行之后附加。您也可以像这样设置变量:
read -d '' -r text<<EOF
haattr -add RVG StorageRVG -string
haattr -add RVG StorageDG -string
etc.
EOF
或
text="haattr -add RVG StorageRVG -string
haattr -add RVG StorageDG -string
etc."