Linux:使用cut命令删除某些字符后AND之前的所有内容

时间:2014-02-15 18:40:30

标签: linux bash grep cut

问题是要显示有多少NMI发生过。如果我检查“cat / proc / interrupts”,它会说

NMI:          0          0   Non-maskable interrupts

现在我需要一个仅返回2 0的衬垫。我做了:

grep -P 'NMI' /proc/interrupts | cut -d ':' -f2

在开头删除“NMI:”,但不知道如何在同一行中完成所有其余操作。

干杯

3 个答案:

答案 0 :(得分:4)

您可以使用awk例如:

$ awk '/^NMI/ {print $2, $3}' /proc/interrupts
0 0

如果您仍想使用cut,那么首先必须使用tr来挤压空格:

$ grep "^NMI:" /proc/interrupts | tr -s ' ' | cut -d' ' -f2,3
0 0

答案 1 :(得分:1)

使用

echo $(grep -oP 'NMI:\s+\K\d+\s+\d+' /proc/interrupts)

答案 2 :(得分:1)

为此,我选择的武器将是awk,因为它的设计考虑了这种处理:

awk '/^NMI/{
    for(i=1; i<=NF; ++i)
        if($i~/^[[:digit:]]+$/)
            printf("%10d ", $i);
    print ""
}' /proc/interrupts

如果CPU数量增加,这应适用于任意数量的(虚拟)CPU。我的/ proc / interrupts文件有4个数字字段,例如。