SED AWK 从日志文件中剥离数据
SED AWK to strip data from log file
您好,我在日志文件中有以下条目。
如果我在上面的行中看到 Denied,我需要在名称字段中生成一个名称列表。所以我需要得到类似的东西:
莎莉
马特
琳达
你能帮我解决这个问题吗?如果你能解释一下这个命令,我将不胜感激,这样我以后就可以将它用于其他日志。
<!-- user 1 -- >
<ABC 12345 "123" text="*Denied: ths is aa test status="0" >
<key flags="tdst" name="sally" />
<userbody>
</Status>
<!-- user 2 -- >
<ABD 12345 "123" text="*Denied: ths is aa test status="0" >
<key flags="tdst" name="Matt" />
<userbody>
</Status>
<!-- user 3 -- >
<ABD 12345 "123" text="*Denied: ths is aa test status="0" >
<key flags="tdst" name="Linda" />
<userbody>
</Status>
此致
试试这个:
sed -rn '/Denied/{n;s#(.+)(name="(\w+))"(.+)##p}' < sample.txt
/Denied/
- 搜索关键词
{n;
- 如果找到则阅读下一行
s#(.+)(name="(\w+))"(.+)##p
- 查找正则表达式组并仅打印出第三个,它等于数据样本中引号内的名称。
这个 GNU sed 可以工作
sed -n -r '/Denied:/{N; s/^.*name="([^"]*)".*$//; p}' file
n 是跳过打印行
r 使用扩展正则表达式,这里用于分组,不转义()字符
N 正在读取下一行并将其添加到模式
space
s/input/output/是替换
^ 是行首,所以 ^.*name=" 会找到所有内容,直到 [^"] first next quote.
$ 是行尾
[^"] 是任何不是 " 的字符(设置否定)
\1 只接受匹配组,即 ([^"]*)
p 是打印行(当 prev condition Denied 在 processed 2 上被 fullfiled 时
行
输出
sally
Matt
Linda
您好,我在日志文件中有以下条目。 如果我在上面的行中看到 Denied,我需要在名称字段中生成一个名称列表。所以我需要得到类似的东西:
莎莉
马特
琳达
你能帮我解决这个问题吗?如果你能解释一下这个命令,我将不胜感激,这样我以后就可以将它用于其他日志。
<!-- user 1 -- >
<ABC 12345 "123" text="*Denied: ths is aa test status="0" >
<key flags="tdst" name="sally" />
<userbody>
</Status>
<!-- user 2 -- >
<ABD 12345 "123" text="*Denied: ths is aa test status="0" >
<key flags="tdst" name="Matt" />
<userbody>
</Status>
<!-- user 3 -- >
<ABD 12345 "123" text="*Denied: ths is aa test status="0" >
<key flags="tdst" name="Linda" />
<userbody>
</Status>
此致
试试这个:
sed -rn '/Denied/{n;s#(.+)(name="(\w+))"(.+)##p}' < sample.txt
/Denied/
- 搜索关键词
{n;
- 如果找到则阅读下一行
s#(.+)(name="(\w+))"(.+)##p
- 查找正则表达式组并仅打印出第三个,它等于数据样本中引号内的名称。
这个 GNU sed 可以工作
sed -n -r '/Denied:/{N; s/^.*name="([^"]*)".*$//; p}' file
n 是跳过打印行
r 使用扩展正则表达式,这里用于分组,不转义()字符
N 正在读取下一行并将其添加到模式
space
s/input/output/是替换
^ 是行首,所以 ^.*name=" 会找到所有内容,直到 [^"] first next quote.
$ 是行尾
[^"] 是任何不是 " 的字符(设置否定)
\1 只接受匹配组,即 ([^"]*)
p 是打印行(当 prev condition Denied 在 processed 2 上被 fullfiled 时
行
输出
sally
Matt
Linda