Text-Processing
在文件中給定字元串之後查找文本
我想提取文件中欄位的內容
數據的外觀:
{"_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
刪除欄位標籤、前導雙引號和尾隨雙引號。同樣,這是一種骯髒的黑客行為,應盡可能使用專用工具。