鉴于此文件
$ cat foo.txt
,,,,dog,,,,,111,,,,222,,,333,,,444,,,
,,,,cat,,,,,555,,,,666,,,777,,,888,,,
,,,,mouse,,,,,999,,,,122,,,133,,,144,,,
我可以像这样打印第一个字段
$ awk -F, '{print $5}' foo.txt
dog
cat
mouse
但是我想忽略那些空字段,以便我可以这样调用
$ awk -F, '{print $1}' foo.txt
答案 0 :(得分:4)
您可以这样使用:
$ awk -F',+' '{print $2}' file
dog
cat
mouse
同样,你可以使用3美元,4美元和5美元等等。在这种情况下不能使用$ 1,因为记录以分隔符开头。
答案 1 :(得分:1)
$ awk '{print $1}' FPAT=[^,]+ foo.txt
dog
cat
mouse
答案 2 :(得分:0)
awk -F, '{gsub(/^,*|,*$/,"");gsub(/,+/,",");print $1}' your_file
测试如下:
> cat temp
,,,,dog,,,,,111,,,,222,,,333,,,444,,,
,,,,cat,,,,,555,,,,666,,,777,,,888,,,
,,,,mouse,,,,,999,,,,122,,,133,,,144,,,
执行:
> awk -F, '{gsub(/^,*|,*$/,"");gsub(/,+/,",");print $1}' temp
dog
cat
mouse
答案 3 :(得分:0)
您可以使用tr -s 'field'
删除字段的多次重复:
$ tr -s ',' < your_file
,dog,111,222,333,444,
,cat,555,666,777,888,
,mouse,999,122,133,144,
然后您可以通过以下方式访问dog
等,
$ tr -s ',' < your_file | awk -F, '{print $2}'
dog
cat
mouse
答案 4 :(得分:0)
perl -anF,+ -e 'print "$F[1]\n"' foo.txt
dog
cat
mouse
这不是awk但你会使用1而不是2。