Unix:有条件地逐行读取文件

时间:2015-03-20 06:17:29

标签: unix awk

我有一个文件,

aaaa
bbbb,cccc
dddd
eeee,ffff
gggg,hhhh
iiii,jjjj
kkkk

我的输出应该是,

aaaa
dddd
kkkk

只有记录中的一个字段...字段分隔符为","

我试过了,

vi test.awk

BEGIN { FS = "[,]+" }

{
    if (NF==1) {
        key = $0
} print 
}
awk -f test.awk source

但不行。请帮忙。

4 个答案:

答案 0 :(得分:3)

以下内容应该有效

awk -F',' '(NF==1){print $0}' input_file

使用-F标记将记录分隔符设置为逗号,然后仅在字段数$0等于1时打印整行NF

或者简称@ nu11p01n73R指出

awk -F, 'NF==1'

答案 1 :(得分:2)

只需跳过带逗号的行。

awk '!/,/' file

答案 2 :(得分:1)

grep就足够了:

fgrep -v , file

输出:

aaaa
dddd
kkkk

答案 3 :(得分:0)

您也可以使用此短sed

sed '/,/d' file
aaaa
dddd
kkkk

删除,

的所有行