我正在尝试sed找到测试和插入行
例如
iface eth0:5 inet static
address 1.1.1.1
netmask 255.255.255.0
iface eth0:6 inet static
address 2.2.2.2
netmask 255.255.255.0
替换
auto eth0:5
iface eth0:5 inet static
address 1.1.1.1
netmask 255.255.255.0
auto eth0:6
iface eth0:6 inet static
address 2.2.2.2
netmask 255.255.255.0
答案 0 :(得分:1)
sed
应该有用,但是这个简单的awk
也可以这样做:
awk '/iface/ {print "auto",$2}1' file
auto eth0:5
iface eth0:5 inet static
address 1.1.1.1
netmask 255.255.255.0
auto eth0:6
iface eth0:6 inet static
address 2.2.2.2
netmask 255.255.255.0
答案 1 :(得分:0)
你走了:
sed -e 's/iface \([^ ]*\) .*/auto \1\'$'\n''&/' file
\([^ ]*\)
将捕获界面的名称,以便我们可以在替换中使用\1
,因此我们可以插入auto \1
,后跟换行符,然后是{{ 1}}表示原始行。
如果要替换内联,可以使用&
标志,例如:
-i
答案 2 :(得分:0)
如果你对perl感到满意:
perl -i -lane 'if(/^iface/){print "auto $F[1]\n$_"}else{print}' your_file
请记住,这是一个现场替换。 如果您不希望替换,那么,
perl -lane 'if(/^iface/){print "auto $F[1]\n$_"}else{print}' your_file
您也可以使用awk:
awk '/^iface/{print "auto "$2}1' your_file