【问题标题】:Extract strings from a file and append strings to execute it on linux从文件中提取字符串并附加字符串以在 linux 上执行
【发布时间】:2020-11-13 11:08:21
【问题描述】:

我有一个文件,其语法如下:

example.file

...
    packageEARTH {
        ...
    }
    packageMARS {
        ...
    }
    packageVENUS {
        ...
    }
...

我通常使用 IDE 将其转换成这样的字符串:

./builder makepackageVENUSMain ; ./builder makepackageVENUSMain ; ./builder makepackageVENUSMain 并粘贴到终端进行构建。

我想自动化这个过程。另外,是否可以像这样每 30 行添加一个命令:

./builder clearSpace; ./builder makepackageVENUSMain ...30x makepackge ... ./builder clearSpace; ... 30xmakepackage ... ./builder clearSpace; ...27x makepackage;

基本上我想从文件中获取所有字符串,然后对修改后的字符串运行命令。

我应该如何处理这个问题? 我应该使用 grep 使用 shell 脚本执行此操作,还是可以使用 awk 来实现此目的?

【问题讨论】:

    标签: linux bash ubuntu awk grep


    【解决方案1】:

    你可以用 awk 做到这一点。

    命令

    awk '{print  $0; if ( $NF % 30 == 0){ print "echo your comment here"}}' lines.txt |bash
    

    考虑到我的输入文件lines.txt是一个命令列表(echo to easy)

    echo line 1
    echo line 2
    echo line 3
    echo line 4
    echo line 5
    echo line 6
    echo line 7
    echo line 8
    echo line 9
    echo line 10
    echo line 11
    echo line 12
    echo line 13
    echo line 14
    echo line 15
    echo line 16
    echo line 17
    echo line 18
    echo line 19
    echo line 20
    echo line 21
    echo line 22
    echo line 23
    echo line 24
    echo line 25
    echo line 26
    echo line 27
    echo line 28
    echo line 29
    echo line 30
    echo line 31
    echo line 32
    echo line 33
    echo line 34
    echo line 35
    echo line 36
    echo line 37
    echo line 38
    echo line 39
    echo line 40
    echo line 41
    echo line 42
    echo line 43
    echo line 44
    echo line 45
    echo line 46
    echo line 47
    echo line 48
    echo line 49
    echo line 50
    echo line 51
    echo line 52
    echo line 53
    echo line 54
    echo line 55
    echo line 56
    echo line 57
    echo line 58
    echo line 59
    echo line 60
    echo line 61
    echo line 62
    echo line 63
    echo line 64
    echo line 65
    echo line 66
    echo line 67
    

    结果

    line 1
    line 2
    line 3
    line 4
    line 5
    line 6
    line 7
    line 8
    line 9
    line 10
    line 11
    line 12
    line 13
    line 14
    line 15
    line 16
    line 17
    line 18
    line 19
    line 20
    line 21
    line 22
    line 23
    line 24
    line 25
    line 26
    line 27
    line 28
    line 29
    line 30
    your comment here
    line 31
    line 32
    line 33
    line 34
    line 35
    line 36
    line 37
    line 38
    line 39
    line 40
    line 41
    line 42
    line 43
    line 44
    line 45
    line 46
    line 47
    line 48
    line 49
    line 50
    line 51
    line 52
    line 53
    line 54
    line 55
    line 56
    line 57
    line 58
    line 59
    line 60
    your comment here
    line 61
    line 62
    line 63
    line 64
    line 65
    line 66
    line 67
    

    【讨论】:

    • 感谢您的快速回答。虽然这不能解决我的问题。也许我不够清楚。我的文件也有其他文本,而不仅仅是“回声线”行。但我想我可以使用 grep 并将该输出通过管道传输到 awk。那就是grep -E '\bpackage' example.file
    • 如何在单词的前面和后面附加字符串?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-24
    • 2022-10-06
    • 2017-02-18
    • 2014-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多