首页 > 解决方案 > 对命令列表重新排序和重新编号

问题描述

我正在尝试对以下命令块重新排序和重新编号,以便每个命令都遵循遵循如下结构的编号:

0.1
0.2
..
0.9
1.0
1.1
..

到目前为止,我可以使用以下命令拉出带有数字的行,但我不确定执行重新排序 + 重新编号的最佳方法是什么。我能得到一些帮助吗?

awk '$2 ~ /\y[0-9]+\y/' eem.txt

要过滤的输出

 event manager applet monitorHealth authorization bypass
    event manager applet monitorHealth
    event syslog pattern xx maxrun 50 ratelimit 50
    action 0.1 cli command xx
    action 0.2 cli command xx
    action 0.4 cli command xx
    action 0.4 cli command xx
    action 0.4 cli command "undebug all”
    action 0.3 cli command xx
    action 0.4 cli command xx
    action 0.5 cli command xx
    action 0.6 cli command xx
    action 0.7 cli command xx
    action 0.8 cli command xx
    action 0.9 cli command xx
    action 1.1 cli command xx
    action 1.2 cli command xx
    action 1.3 cli command xx
    action 1.4 cli command xx
    action 1.5 cli command xx
    action 1.6 cli command xx
    action 1.7 cli command xx
    action 1.8 cli command xx
    action 1.9 cli command xx
    action 2.1 cli command xx
    action 2.2 cli command xx
    action 2.3 cli command xx

谢谢。

标签: awk

解决方案


要对行重新编号,只需为新数字设置一个计数器,对于每个匹配的行,用它替换第二列的当前值并增加 0.1。

$ awk -v counter=0.1 '$2 ~ /^[0-9]+\.[0-9]$/ { $1 = "    " $1; # Keep the leading spaces
                                               $2 = sprintf("%.1f", counter);
                                               counter += 0.1 } 1' eem.txt
event manager applet monitorHealth authorization bypass
    event manager applet monitorHealth
    event syslog pattern xx maxrun 50 ratelimit 50
    action 0.1 cli command xx
    action 0.2 cli command xx
    action 0.3 cli command xx
    action 0.4 cli command xx
    action 0.5 cli command "undebug all”
    action 0.6 cli command xx
    action 0.7 cli command xx
    action 0.8 cli command xx
    action 0.9 cli command xx
    action 1.0 cli command xx
    action 1.1 cli command xx
    action 1.2 cli command xx
    action 1.3 cli command xx
    action 1.4 cli command xx
    action 1.5 cli command xx
    action 1.6 cli command xx
    action 1.7 cli command xx
    action 1.8 cli command xx
    action 1.9 cli command xx
    action 2.0 cli command xx
    action 2.1 cli command xx
    action 2.2 cli command xx
    action 2.3 cli command xx
    action 2.4 cli command xx

推荐阅读