条件に応じたライン抽出

条件に応じたライン抽出

カンマ区切りファイルの各行には5つのフィールドがあります。

a,b,c,d,e
f,g,c,i,
j,k,c,m,n
o,p,c,r,s
t,u,c,w,
x,y,z,aa,bb

3番目のフィールドにcがあり、5番目のフィールドが空でない行を抽出する方法は?結果は次のとおりです。

a,b,c,d,e
j,k,c,m,n
o,p,c,r,s

ベストアンサー1

考えられる解決策awk

awk -F',' '$3 == "c" && $5' file

実際のデータによっては、コメントに記載されているとおりに動作しない場合があります(これを指摘したJanisに感謝します。f,g,c,i,0たとえば、5番目のフィールドが0の場合は欠落する可能性があります)。したがって、次のことができます。

awk -F',' '$3 == "c" && $5 != ""' file

これは許容される答えなので、文字列に5番目のフィールドを強制するあまり明確ではない方法を追加します(cuonglm(+ 1)ソリューションに示されているように)。

awk -F',' '$3 == "c" && $5""' file

おすすめ記事