[英]Bash Comma Delimited List Extracting Last Column
我在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>
在awk中:
$ awk -F, '$4==""' file
name3,org3,enabled,
name5,org5,enabled,
-F,
定義FS
,輸入文件分隔符 $4==""
輸出第四個字段為空的記錄 grep
:
$ grep ",$" file
name3,org3,enabled,
name5,org5,enabled,
,$
返回最后一個字段為空的記錄 我假設您的文件包含以下行:
name1,org2,enabled,email@domain.com
而不是 name1,org2,enabled,email
基於此,您可以使用grep -v
(反轉),即:
grep -v '@' file
輸出:
name3,org3,enabled,
name5,org5,enabled,
這可能是awk命令,類似於以下代碼:
awk -F, '$4 == ""'
此代碼假定:
編輯:早期我與!$4
分享了更短的方法。 但這不是一個好方法。 有關詳細信息,請查看我的帖子中的討論。
grep方法:
grep -Eo '([^[:space:]]*,){3}$' file
輸出:
name3,org3,enabled,
name5,org5,enabled,
sed方法:
sed -n '/\(\S*,\)\{3\}$/p' file
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.