如何插入一行

时间:2011-03-25 14:19:01

标签: shell awk

我有一个这种格式的文件

  

机器名称host1
  这里的东西1

     

机器名称host1
  somethingelse2

我需要将其更改为

  

机器名称host1

     

设置用户名1000

     

这里的东西1

     

机器名称host1
  设置用户名1001

     

somethingelse2

我需要找到一行“机器名称host1”并在其旁边的所有匹配项上插入“set username with incremental-value”。

2 个答案:

答案 0 :(得分:2)

使用Perl one-liner(假设带有数据的文件名称称为'machines':

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

请注意,文件本身将被更改,并且使用扩展名.bak

创建备份文件

答案 1 :(得分:2)

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

我使用awk的-v选项

传递用户名的“种子”值