[英]extract the value from the log using shell script
嗨,我是shell腳本的新手。 我試圖從日志中提取特定值。
當我使用特定關鍵字過濾數據時。 它看起來像這些。
cat hive-server2.log | grep user
數據的輸出是
2018-01-18T16:20:39,464 WARN [67272380-f3e9-40da-8e8e-a209c05eb4fe HiveServer2-Handler-Pool: Thread-37([])]: util.CurrentUserGroupInformation (CurrentUserGroupInformation.java:getGroupNameFromUser(52)) - user a8197zz (auth:PROXY) via hive (auth:SIMPLE) has no primary groupName, setting groupName to be a8197zz.
在上面的數據中,我想像這樣為用戶提取特定值。
a8197zz
我試過這樣的。
awk 'BEGIN{ print "User" }
/\<user\>/{ u=$10 }
//{ print u }' OFS=',' hive-server2.log
它只打印空白行。 任何幫助將不勝感激。
使用GNU grep:
grep -Po '[^ ]*(?=\.$)' file
要么
grep -Po 'user \K[^ ]*' file
用awk:
awk -F "[. ]" '{print $(NF-1)}' file
要么
awk -F "user " '{split($2,array," "); print array[1]}' file
或使用字符串user
搜索字段並打印下一個字段:
awk '{for(i=1; i<=NF; i++) if ($i=="user") print $(i+1) }' file
輸出:
a8197zz
也嘗試這個sed
命令
sed 's/.*user \([^ ]\+\).*/\1/' fileName
輸出:
a8197zz
以下awk
可能會幫助你。
awk '{sub(/\./,"",$NF);print $NF}' Input_file
輸出如下。
a8197zz
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.