Rez*_*eza 5 sed awk shell-script text-processing
逗号分隔文件中的每一行都有 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
Run Code Online (Sandbox Code Playgroud)
如何提取在第三个字段中有 c 并且它们的第 5 个字段不为空的行?结果将是:
a,b,c,d,e
j,k,c,m,n
o,p,c,r,s
Run Code Online (Sandbox Code Playgroud)
可能的解决方案awk:
awk -F',' '$3 == "c" && $5' file
Run Code Online (Sandbox Code Playgroud)
根据实际数据,这可能无法像评论中提到的那样工作(感谢 Janis 指出这一点:它会丢失,f,g,c,i,0例如第 5 个字段为 0),因此您可以执行以下操作:
awk -F',' '$3 == "c" && $5 != ""' file
Run Code Online (Sandbox Code Playgroud)
因为这是公认的答案,所以我添加了不那么明显的强制第 5 个字段到字符串(如在 cuonglm(+1) 解决方案中):
awk -F',' '$3 == "c" && $5""' file
Run Code Online (Sandbox Code Playgroud)