使用grep显示硬盘设备的名称

时间:2016-01-29 02:06:23

标签: linux terminal grep

为什么这个命令:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TestApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            decimal demo1 = 1.2311M;
            decimal demo2 = 1.2300M;
            decimal demo3 = 1.00M;
            decimal demo4 = 1M;

            if (IsValid(demo1))
            {
                Console.WriteLine(ValueKeptZero(demo1));
            }

            if (IsValid(demo2))
            {
                Console.WriteLine(ValueKeptZero(demo2));
            }

            if (IsValid(demo3))
            {
                Console.WriteLine(ValueKeptZero(demo3));
            }

            if (IsValid(demo4))
            {
                Console.WriteLine(ValueKeptZero(demo4));
            }

            Console.ReadLine();
        }

        static bool IsValid(object value)
        {

            if (!(value.GetType() == typeof(decimal)))
                return false;

            decimal tmp = (decimal)value;

            if(tmp == 1.23M)
            {
                string test = tmp.ToString();

                if(test.Substring(test.IndexOf(".") + 1).Length != 4)
                {
                    return false;
                }

            }

            return true;

        }

        static decimal ValueKeptZero(object value)
        {
            return (decimal)value;
        }

    }
}

显示以下内容?你能一步一步地展示吗?

[jalal@galapagos-20] (42)$ dmesg | egrep '(s|h)d[a-z]'

2 个答案:

答案 0 :(得分:1)

命令dmesg将内核日志缓冲区转储到stdout。此输出由一堆日志消息组成,每个消息都在一个单独的行上。

使用选项egrep将该输出传送到命令(s|h)d[a-z]egrep一次检查其stdin(dmesg的输出)一行,以匹配正则表达式(s|h)d[a-z]。此正则表达式将匹配一系列字符:

  • 第一个字符是s或h
  • 第二个字符是d
  • 第三个字符位于a和z之间的ASCII范围(包括)中(小写字母a到z)。

egrep打印到stdout任何与提供的正则表达式匹配的行。

答案 1 :(得分:1)

egrep命令正在使用正则表达式(s|h)d[a-z]来过滤dmesg输出中包含序列hdahdzsdasdz的行 - Linux中磁盘设备的传统名称。

此正则表达式可以切换为[sh]d[a-z],效果相同,但您可能会更容易理解。

如果您正在寻找磁盘,有几个误报,例如包含" hdaudio"的行。