【问题标题】:how to insert next to a line如何在一行旁边插入
【发布时间】:2011-03-25 14:19:00
【问题描述】:

我有一个这种格式的文件

机器名host1
这里有东西1

机器名host1
别的东西2

我需要把它改成

机器名host1

设置用户名 1000

这里有东西1

机器名host1
设置用户名1001

其他东西2

我需要找到一行“机器名 host1”,并在其旁边的所有出现处插入一行“使用增量值设置用户名”。

【问题讨论】:

    标签: shell awk


    【解决方案1】:
    awk -v user=1000 '
      {print} 
      /machine name host1/ {printf("set username %d\n", user++)}
    ' filename
    

    我使用 awk 的 -v 选项为用户名传递“种子”值

    【讨论】:

    • 感谢您的回答。但我的要求需要 awk。 :D
    【解决方案2】:

    使用 Perl 单行(假设包含数据的文件的名称称为“机器”:

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

    请注意,文件本身将被更改,并会创建一个扩展名为 .bak 的备份文件

    【讨论】:

    • 嵌入换行符的单行似乎有点用词不当。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多