我有一个这种格式的文件
机器名称host1
这里的东西1机器名称host1
somethingelse2
我需要将其更改为
机器名称host1
设置用户名1000
这里的东西1
机器名称host1
设置用户名1001somethingelse2
我需要找到一行“机器名称host1”并在其旁边的所有匹配项上插入“set username with incremental-value”。
答案 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选项
传递用户名的“种子”值