Text-Processing

在文件中給定字元串之後查找文本

  • October 21, 2019

我想提取文件中欄位的內容

數據的外觀:

{"_index":"bk","_type":"account","_id":"1","_score":1,"_source":{"a_n":1,"firstname":"Blake","lastname":"Hess","age":30,"gender":"M","address":"anything Avenue","employer":"anything","email":"anything@gmail.com","city":"anything","state":"anything"}}

所需的輸出

Blake

用於jq解析json數據:

jq -r '._source.firstname'

使用來自問題的輸入數據,它顯示了所需的輸出。

原則上,提到的專用 JSON 解析器是正確的方法。如果由於某種原因這對您不起作用,並且您真的只對這個特定的欄位值感興趣,那麼下面是一個快速但骯髒的(!!) hack 來提取欄位值:

awk '{split($1,fld,"\"firstname\":\"[[:alnum:]]*\"",sep); print(sep[1])}' <filename> | sed -e "s/\"firstname\":\"//" -e "s/\"$//"

這基本上使用模式"firstname":"<some string>"作為欄位分隔符,列印欄位分隔符的實際值("firstname":"Blake"在您的情況下),並通過管道sed刪除欄位標籤、前導雙引號和尾隨雙引號。

同樣,這是一種骯髒的黑客行為,應盡可能使用專用工具。

引用自:https://unix.stackexchange.com/questions/547904