如何正则表达特定的文本列

时间:2014-09-28 21:22:41

标签: awk grep

我一直在尝试创建一个正则表达式公式,它允许我只处理文本文件中特定列的文本。

示例:

John Milanos
Anne Silverwood
Tina Fastman

我知道awk -F ' ' '{print $2}'将打印所需的列,因此允许我将文本传递给第二个grep命令。但是,我的最终输出将只打印姓氏。我想打印整行,但只查找姓氏的模式。

如果我跑:

awk -F ' ' '{print $2}' listofnames.txt | grep -v 'wood' 

我最终会:

Milanos    
Fastman

我想要的输出是全名列表:

John Milanos
Tina Fastman

3 个答案:

答案 0 :(得分:1)

您可以在awk中匹配正则表达式:

awk '$2 !~ /wood/' listofnames.txt

!~表示"不匹配"。

答案 1 :(得分:0)

使用grep:

$ echo '
John Milanos
Anne Silverwood
Tina Fastman' | grep -Ev '^\S+\s+\S*wood'

John Milanos
Tina Fastman

答案 2 :(得分:-1)

这个正则表达式怎么样:

\b\S+\s+(.*wood.*)

(字边界,至少一个非空白,至少一个空白,任何东西,“木头”,其他任何东西) 大括号在那里,所以你可以捕获姓氏......