我在bash的txt文件中有一个逗号分隔的列表,如下所示:
name1,org2,enabled,email
name2,org1,enabled,email
name3,org3,enabled,
name4,org4,enabled,email
name5,org5,enabled,
我想要一个命令来提取丢失电子邮件的人的行,这是什么命令呢?感谢
awk -<Flag> <don't know the syntax>
答案 0 :(得分:3)
在awk中:
$ awk -F, '$4==""' file
name3,org3,enabled,
name5,org5,enabled,
-F,
定义FS
,输入文件分隔符$4==""
输出第4个字段为空的记录 grep
:
$ grep ",$" file
name3,org3,enabled,
name5,org5,enabled,
,$
返回最后一个字段为空的记录答案 1 :(得分:1)
我认为你的文件包含如下行:
name1,org2,enabled,email@domain.com
和不 name1,org2,enabled,email
基于此,您可以使用grep -v
(反转),即:
grep -v '@' file
输出:
name3,org3,enabled,
name5,org5,enabled,
答案 2 :(得分:1)
这可能是类似于以下代码的awk命令:
awk -F, '$4 == ""'
此代码假定:
编辑:
早期我与!$4
分享了较短的方式。但这个方法并不好。有关详细信息,请查看我的帖子中的评论中的讨论。
答案 3 :(得分:0)
grep 方法:
grep -Eo '([^[:space:]]*,){3}$' file
输出:
name3,org3,enabled,
name5,org5,enabled,
sed 方法:
sed -n '/\(\S*,\)\{3\}$/p' file