2011-03-25 8 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