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

Unix: Read file line by line conditionally

我有一个文件,

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

我的输出应该是,

aaaa
dddd
kkkk

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

我试过了,

vi test.awk

BEGIN { FS = "[,]+" }

{
    if (NF==1) {
        key = [=12=]
} print 
}
awk -f test.awk source

但是没有用。请帮忙。

以下应该有效

awk -F',' '(NF==1){print [=10=]}' input_file

使用-F标志将记录分隔符设置为逗号,然后当字段数NF等于1

时只打印整行[=13=]

或者简而言之,如@nu11p01n73R 所指出的

awk -F, 'NF==1'

跳过有逗号的行。

awk '!/,/' file

你也可以使用这个简短的sed

sed '/,/d' file
aaaa
dddd
kkkk

它删除所有带有,

的行

grep 就足够了:

fgrep -v , file

输出:

aaaa
dddd
kkkk