用awk解析日志文件

时间:2014-10-27 12:27:08

标签: bash awk

我尝试使用以下代码解析日志文件:

    if [[ $line -match "=====.*" ]]; then
        awk $2 = $vFiler;
        echo "$vFiler";

说明:

有些行以=====或' vol /...'等模式开头;后跟一个名字 我想找到所有以=====或' vol /...&# 39开头的行;并设置后面的字符串等于一个变量,但我真的在努力做到这一点,我想到了一个带有awk的if命令(我知道-match不是真正的命令)。

输入看起来像这样:

===== vfiler0
/vol/vol0   

===== vFiler1
/vol/vol1
输出应该是:

vFiler, Type
vFiler0, /vol/vol0
vFiler1, /vol/vol1
你能帮助我吗?我试图在bash脚本中执行此操作 是否有可能得到一个"如果......"就像我上面试过的那样?

3 个答案:

答案 0 :(得分:2)

awk '/=====/{print $2}' inputFile

将输出

vfiler0
vFiler1

答案 1 :(得分:2)

我会使用以下内容:

awk -v RS="=====" -v OFS="," 'BEGIN {print "vFiler", "Type" } NF{print $1, $2}' file

它返回:

vFiler,Type
vfiler0,/vol/vol0
vFiler1,/vol/vol1

我们所做的是将记录分隔符设置为=====。这样,每次都会处理====的块。然后,只要存在至少一个(NF),我们就会打印第一个和第二个字段。

答案 2 :(得分:0)

这有帮助吗?

grep -Po '^={5}\s+\K.*' file