2012-08-06 120 views
-1

我有一个1000行的文件,每行有170个字段。我想grep一个特定的领域;例如,视场数30为空或不....Linux中的grep空白字段

+0

是否有字段分隔符? – codaddict 2012-08-06 09:03:36

+0

粘贴文件的一部分(或者这里预期的格式)。诀窍在于始终确定可以在数据中利用哪些结构(或缺少)。 – nemesisfixx 2012-08-06 09:06:17

+0

您可以使用[awk](http://www.unix.com/shell-programming-scripting/19331-awk-how-check-if-field-blank.html)。 – Sjoerd 2012-08-06 09:06:46

回答

0

如果字段分隔符为“:

awk -F":" '{if($30=="")print $0}' file_name 

此上述命令将打印其字段30是空白的行。

+0

我试过这个但没来,awk -F“,”'{if($ 20 =“”)print $ 0}' – 2012-08-06 10:08:55

+1

甚至只是'awk -F:'$ 30 ==“”'file_name' – tripleee 2012-08-06 10:18:53

+0

答案有一个错字;我修好了它。请再试一次吗? – tripleee 2012-08-06 10:19:31

0

你没有提到特定的字段分隔符,所以我将继续使用基于CSV的示例。到grep对于场30使用GNU grep是空白:

$ grep -n '^\([^,]*,\)\{29\},' test.csv 
2:2,1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9,55,,33 

本质上讲,我们需要具有尾随逗号(,)分离器的每个,然后又一个分隔符之后直接与没有中间文本29个字段。

-n选项的存在确保了任何匹配与行号前缀,这样你就可以告诉其中每场比赛是在输入文件。

我相信这可以适用于任何POSIX兼容的grep,但我不确定。