Grep 使用(和|或)运算符对列进行灰显
我有如下数据:Grep 使用(和|或)运算符对列进行灰显,grep,Grep,我有如下数据: bark art|evt|evt|nat barnburner evt|hum bash evt|evt battle act|act|act|evt|evt bay anm|art|art|art|evt|nat|plt beat act|act|atr|com|evt|evt|evt|hum|loc|tme beating act|act|evt|evt bread act|act|evt|evt|hum|nat 我希望能够从中提取第一列中有任何字
bark art|evt|evt|nat
barnburner evt|hum
bash evt|evt
battle act|act|act|evt|evt
bay anm|art|art|art|evt|nat|plt
beat act|act|atr|com|evt|evt|evt|hum|loc|tme
beating act|act|evt|evt
bread act|act|evt|evt|hum|nat
我希望能够从中提取第一列中有任何字符串的所有行,但第二列中有特定的信息模式。
更具体地说,我想提取那些在第二列中具有evt的行,以及至少我指定的另一个值
例如,我想提取所有具有evt和至少hum或nat的行(或者同时具有hum和nat和evt)。
因此,我期望的结果是:
bark art|**evt**|**evt**|**nat**
barnburner **evt**|**hum**
bay anm|art|art|art|**evt**|**nat**|plt
beat act|act|atr|com|**evt**|**evt**|**evt**|**hum**|loc|tme
bread act|act|**evt**|**evt**|**hum**|**na**t
我一直试图用grep
来实现这一点,但没有成功
我一直在尝试的grep是:
$ grep 'evt\|(hum|nat)' file
有人能告诉我我做错了什么吗?
谢谢 您已经非常接近了,只需使用扩展正则表达式参数
E
$ grep -E 'evt\|(hum|nat)' file
bark art|evt|evt|nat
barnburner evt|hum
bay anm|art|art|art|evt|nat|plt
beat act|act|atr|com|evt|evt|evt|hum|loc|tme
bread act|act|evt|evt|hum|nat
很接近,只需使用扩展正则表达式参数
E
$ grep -E 'evt\|(hum|nat)' file
bark art|evt|evt|nat
barnburner evt|hum
bay anm|art|art|art|evt|nat|plt
beat act|act|atr|com|evt|evt|evt|hum|loc|tme
bread act|act|evt|evt|hum|nat
很接近,只需使用扩展正则表达式参数
E
$ grep -E 'evt\|(hum|nat)' file
bark art|evt|evt|nat
barnburner evt|hum
bay anm|art|art|art|evt|nat|plt
beat act|act|atr|com|evt|evt|evt|hum|loc|tme
bread act|act|evt|evt|hum|nat
很接近,只需使用扩展正则表达式参数
E
$ grep -E 'evt\|(hum|nat)' file
bark art|evt|evt|nat
barnburner evt|hum
bay anm|art|art|art|evt|nat|plt
beat act|act|atr|com|evt|evt|evt|hum|loc|tme
bread act|act|evt|evt|hum|nat
格雷普:
- 默认值:BRE(基本正则表达式),必须转义一些特殊字符才能赋予它们特殊的含义。例如,(…
- -E选项:在(扩展正则表达式)中,您可以跳过一些特殊字符,将特殊含义带走。
|,(,{…
evt\|(hum | nat)
匹配
“evt”或literal”(hum | hat)
带有BRE,您要寻找的可能是:evt | \(hum \| nat\)
这里的\(和\
具有特殊意义
或者使用-E
BRE,然后你就可以grep'evt\|(哼哼| hat)
,\|
去掉了特殊的含义,使其与文字“|”
grep:
- 默认值:BRE(基本正则表达式),您必须转义一些特殊字符才能赋予它们特殊的含义。例如
|,(…
- -E选项:在(扩展正则表达式)中,您可以跳过一些特殊字符,将特殊含义带走。
|,(,{…
evt\|(hum | nat)
匹配
“evt”或literal”(hum | hat)
带有BRE,您要寻找的可能是:evt | \(hum \| nat\)
这里的\(和\
具有特殊意义
或者使用-E
BRE,然后你就可以grep'evt\|(哼哼| hat)
,\|
去掉了特殊的含义,使其与文字“|”
grep:
- 默认值:BRE(基本正则表达式),您必须转义一些特殊字符才能赋予它们特殊的含义。例如
|,(…
- -E选项:在(扩展正则表达式)中,您可以跳过一些特殊字符,将特殊含义带走。
|,(,{…
evt\|(hum | nat)
匹配
“evt”或literal”(hum | hat)
带有BRE,您要寻找的可能是:evt | \(hum \| nat\)
这里的\(和\
具有特殊意义
或者使用-E
BRE,然后你就可以grep'evt\|(哼哼| hat)
,\|
去掉了特殊的含义,使其与文字“|”
grep:
- 默认值:BRE(基本正则表达式),您必须转义一些特殊字符才能赋予它们特殊的含义。例如
|,(…
- -E选项:在(扩展正则表达式)中,您可以跳过一些特殊字符,将特殊含义带走。
|,(,{…
evt\|(hum | nat)
匹配
“evt”或literal”(hum | hat)
带有BRE,您要寻找的可能是:evt | \(hum \| nat\)
这里的\(和\
具有特殊意义
<>或使用<代码> -e >代码> BRE,然后可以<代码> GRP'EVT\[(HUM.HAT)< /代码>,<代码> >代码>使其与文字<代码> > /代码> /P>匹配,而不使用复数<代码> GRP命令,您可以考虑使用<代码> AWK < /代码>,它非常容易处理列和条件。<代码> AWK-V FS=“1”=“EVT”。和($ 2==“EVT”=2美元=“ACT”)“文件< /代码>”,而不是使用复数<代码> GRP命令,您可以考虑使用“代码> AWK < /代码>,它非常容易处理列和条件。<代码> AWK-V FS=“1”=“EVT”& &($==“EVT”=$2==“ACT”)。而不是使用复数<代码> GRP<代码>命令,您可以考虑使用<代码> AWK < /代码>,它很容易处理列和条件。<代码> AWK-V FS=“1”=“EVT”&(2美元=“EVT”=2美元=“ACT”)。而不是使用复数<代码> GRP命令,您可以考虑使用<代码> AWK < /代码>,它非常容易处理列和条件。<代码> AWK-V FS=“1”=“EVT”& &($ 2=“EVT”=2美元=“ACT”)“文件< /代码>等”。