使用sed文件添加扫描行

时间:2013-12-27 12:26:10

标签: sed

我正在尝试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

3 个答案:

答案 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