簡體   English   中英

使用shell腳本從日志中提取值

[英]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.

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