首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用sed文件添加扫描线

使用sed文件添加扫描线
EN

Stack Overflow用户
提问于 2013-12-27 12:26:10
回答 3查看 55关注 0票数 1

我正在试图找到测试和插入行

示例

代码语言:javascript
复制
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

替换

代码语言:javascript
复制
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
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-12-27 12:38:11

给你:

代码语言:javascript
复制
sed -e 's/iface \([^ ]*\) .*/auto \1\'$'\n''&/' file

\([^ ]*\)将捕获接口的名称,以便\1可以在替换时使用,因此我们可以插入为auto \1,然后是换行符,然后是&,这意味着原始行。

如果要替换内联,可以使用-i标志,例如:

代码语言:javascript
复制
sed -ie 's/iface \([^ ]*\) .*/auto \1\'$'\n''&/' /etc/network/interfaces
票数 0
EN

Stack Overflow用户

发布于 2013-12-27 12:43:06

sed应该可以工作,但是这个简单的awk也可以做到:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2013-12-27 12:39:14

如果您对perl没有意见的话:

代码语言:javascript
复制
perl -i -lane 'if(/^iface/){print "auto $F[1]\n$_"}else{print}' your_file

请记住,这是一个内部替代。如果你不想换个地方,

代码语言:javascript
复制
perl -lane 'if(/^iface/){print "auto $F[1]\n$_"}else{print}' your_file

您也可以使用awk:

代码语言:javascript
复制
awk '/^iface/{print "auto "$2}1' your_file
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20800708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档