2011-03-25 51 views
0

我这种格式有一个文件接下来该怎么插入到行

机器名称主机1
东西here1

机器名称主机1
somethingelse2

我需要改变这作为

机器名称主机1

设定的用户名1000

东西here1

机器名称主机1
设定的用户名1001

somethingelse2

我需要找到一条线 “计算机名称主机1”并在其旁边的所有匹配项中插入“set username with incremental-value”行。

回答

2
awk -v user=1000 ' 
    {print} 
    /machine name host1/ {printf("set username %d\n", user++)} 
' filename 

我通过用户名“种子”值与awk的-v选项

+0

谢谢你的答案。但我的需求需要awk。 :d – 2011-03-28 06:42:00

2

使用一个Perl的一行(假设与数据文件的名字叫做“机”:

perl -n -i.bak -e '$i=999 if !$i; 
      if (m/machine name host1/) { 
       $i++; 
       $_ = "$_\nset username $i\n"; 
      }; 
      print;' machines 

注意的是,文件本身将被改变和备份文件扩展名为.bak的创建

+0

一个班轮带有嵌入式换行符似乎有点用词不当:) – 2011-03-26 12:50:35

+0

@William:德勤 – 2011-03-26 20:11:41