Sed - 修改第一列中的单个字符而不触及其他字符

时间:2013-02-22 16:05:27

标签: linux bash

我有一个接口列表,我需要将原始文件.修改为:,以便我可以将它们提供给ifconfig脚本。

看起来基本上是这样的:

eth0.1 192.168.0.1 255.255.255.0

eth0.2 192.168.1.1 255.255.255.0

eth0.3 192.168.2.1 255.255.255.0

使用我的基本知识,我可以做到以下几点:

sed -i 's/\./\:/g' <test_file>

将所有.变为:

eth0:1 192:168:0:1 255:255:255:0

现在,如果我没有修改原始文件,我知道我可以awk '{print $1}'但是在使用sed -i时我不知道如何执行此操作。

我应该提到的是,某些行也不是子接口,例如:

eth1 10.10.10.1 255.255.255.0

删除g中的sed(我确定它是正确的方向),不幸的是将这些行的第一个八位字节修改为:

eth1 10:10.10.1...

1 个答案:

答案 0 :(得分:2)

试试这个:

sed -i -r 's/^(eth[0-9]+)\./\1:/' file.txt

输出:

eth0:1 192.168.0.1 255.255.255.0
eth0:2 192.168.1.1 255.255.255.0
eth0:3 192.168.2.1 255.255.255.0