【发布时间】:2011-03-25 14:19:00
【问题描述】:
我有一个这种格式的文件
机器名host1
这里有东西1机器名host1
别的东西2
我需要把它改成
机器名host1
设置用户名 1000
这里有东西1
机器名host1
设置用户名1001其他东西2
我需要找到一行“机器名 host1”,并在其旁边的所有出现处插入一行“使用增量值设置用户名”。
【问题讨论】:
我有一个这种格式的文件
机器名host1
这里有东西1机器名host1
别的东西2
我需要把它改成
机器名host1
设置用户名 1000
这里有东西1
机器名host1
设置用户名1001其他东西2
我需要找到一行“机器名 host1”,并在其旁边的所有出现处插入一行“使用增量值设置用户名”。
【问题讨论】:
awk -v user=1000 '
{print}
/machine name host1/ {printf("set username %d\n", user++)}
' filename
我使用 awk 的 -v 选项为用户名传递“种子”值
【讨论】:
使用 Perl 单行(假设包含数据的文件的名称称为“机器”:
perl -n -i.bak -e '$i=999 if !$i;
if (m/machine name host1/) {
$i++;
$_ = "$_\nset username $i\n";
};
print;' machines
请注意,文件本身将被更改,并会创建一个扩展名为 .bak 的备份文件
【讨论】: