簡體   English   中英

Bash逗號分隔列表提取最后一列

[英]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 == ""'

此代碼假定:

  1. 每行是逗號分隔的字符串
  2. 第四個字段可能為空
  3. 如果項目2為true,則打印整行

編輯:早期我與!$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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM