我正在尝试解析日志文件以解压缩userIds。以下是catalina.out中每个日志的设置方式。我想只提取userId。我该怎么做我尝试了awk和grep,但它返回整个块而不仅仅是userId。此外,我想获得每个唯一的userId一次,因为相同的用户可以多次登录,所以我只想要我写的文件只需要一次。你能帮助我了解从哪里开始?谢谢!
以下是我尝试过的命令:
<link href="https://cdn.rawgit.com/Killercodes/281792c423a4fe5544d9a8d36a4430f2/raw/42e5b91a60ea5e25b7bb42c0a315d9e740c92f0/GistDarkCode.css" rel="stylesheet" type="text/css">
当我这样做而不是返回userId时,它返回整个块(如下所示)
日志格式:
awk '/userId/' catalina.out
grep "userId" catalina.out
答案 0 :(得分:0)
我假设你的用户名会被发现像&#34; userId&#34;:&#34; test_chumma&#34;等等,如果是这种情况,那么下面的内容也可以帮助你。
awk -F'[":,]' '/userId/{print $11}' Input_file
当然,如果您有更多要求,请向我们展示更多具有完整条件的样品输出。
答案 1 :(得分:0)
awk的另一个例子:
awk -F"[:,]" '$1 ~ /^{/ {gsub("\"","",$4); print $4}' inFile.log
在这里,我们使用awk命令的:
标记,
按冒号F
或逗号-F[:,]
拆分记录,然后如果第一个字段在记录$1
以括号/^{/
开头(我们使用正则表达式运算符~
作为条件)然后我们将第4个字段的双引号替换为{{1}并打印结果gsub("\"","",$4)
print $4
答案 2 :(得分:0)
这是另一个结合awk和unix剪切的解决方案:
awk '{split($0,a,":"); print a[2]}' catalina.out | cut -f2 -d","
"userId"
但这也适用于您发布的示例。
答案 3 :(得分:0)
awk -F\" '{print $6}' file
userId