2016-02-04 47 views
3

后,我有一个文件a.text:AWK - 打印完整的输入字符串比较

hello world 
my world 
hello universe 

我想打印完整的字符串,如果第二个字是“世界”:

[[email protected]:/var/log] cat a | awk -F " " '{if($2=="world") print $1}' 
hello 
my 

但我想要的输出是:

[[email protected]:/var/log] cat a | awk -F " " '{if($2=="world") print <Something here>}' 
hello world 
my world 

任何关于如何做到这一点的指针?

在此先感谢。

+0

我只想在第二个元素是“世界”时打印完整的输入行。 –

回答

1

如果你想/必须使用awk来解决问题:

awk '$0~/world/' file.txt 

如果某行(即$0)字符串“世界”匹配(即~/world/)全线打印

如果你只是想检查第二列world

awk '$2 == "world"' file.txt 
+0

你不需要'$ 0〜/ world /'中的'$ 0〜',只需'/ world /'就足够了。 –

+1

@EdMorton谢谢你的提示!我无法想象还有更短的解决方案 –

2
awk '{if ($2=="world") {print}}' file 

输出:

 
hello world 
my world 
2

首先,因为你正在编写一个if语句,你可以使用awk 'filter{commands;}'模式,像这样

awk -F " " '$2=="world" { print <Something here> }' 

要打印整个线就可以使用print $0

awk -F " " '$2=="world"{print $0}' file 

它可以写成

awk -F " " '$2=="world"{print}' file 

{print}是默认操作,所以它可以像这样的过滤器后,可以省略:

awk -F " " '$2=="world"' file 

甚至不带-f选项,因为空间是默认值FS

awk '$2=="world"' file