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

Linux:使用cut命令删除某些字符前后的所有内容,linux,bash,grep,cut,Linux,Bash,Grep,Cut,问题是要显示发生了多少次NMI。如果我选中“cat/proc/interrupts”,它会显示 现在我需要一个只返回20的一行程序。我已经做了: grep -P 'NMI' /proc/interrupts | cut -d ':' -f2 删除开始时的“NMI:”,但不知道如何在同一行中完成其余所有操作 干杯您可以使用awk例如: $ awk '/^NMI/ {print $2, $3}' /proc/interrupts 0 0 如果仍要使用cut,则首先必须使用tr压缩空格: $ gr

问题是要显示发生了多少次NMI。如果我选中“cat/proc/interrupts”,它会显示

现在我需要一个只返回20的一行程序。我已经做了:

grep -P 'NMI' /proc/interrupts | cut -d ':' -f2
删除开始时的“NMI:”,但不知道如何在同一行中完成其余所有操作


干杯

您可以使用
awk
例如:

$ awk '/^NMI/ {print $2, $3}' /proc/interrupts
0 0
如果仍要使用
cut
,则首先必须使用
tr
压缩空格:

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

您可以使用
awk
例如:

$ awk '/^NMI/ {print $2, $3}' /proc/interrupts
0 0
如果仍要使用
cut
,则首先必须使用
tr
压缩空格:

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

与:


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

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

对于(i=1;i对于这一点,我选择的武器是
awk
,因为它的设计考虑到了这种处理方式:

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

对于(i=1;对于第二个,应该是:
grep-P'NMI'/proc/interrupts | tr-s'| cut-d'-f2,3
是的,真的。只是不需要-P。更新了,谢谢!您可以使用
cut-w
按任意数量的空格分割(连续空格和制表符作为单个字段分隔符)在我的
切割(GNU coreutils)中,@地毯烟民不知道
-w
切割的
选项8.20
不可用。@fedorqui是的,这似乎是一个BSD扩展…我以为它是POSIX/universal,但显然不是。我的坏。对于第二个扩展,应该是:
grep-P'NMI'/proc/interrupts | tr-s'| cut-d'-f2,3
是的,正确点。只是-P不需要。更新了,谢谢!您可以使用
cut-w
按任意数量的空白(连续空格和制表符作为单个字段分隔符计算)不知道
-w
选项到
剪切
,@ru毯smoker.In my
剪切(GNU coreutils)8.20
不可用。@fedorqui对,这似乎是一个BSD扩展…我以为它是POSIX/universal,但显然不是。我的错。你想在你的文件中计算NMI吗?你想在你的文件中计算NMI吗?@BMW:我利用shell分词来避免显示不需要的内容spaces@BMW:我利用shell单词splitting以避免显示不需要的空间