我尝试使用以下代码解析日志文件:
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脚本中执行此操作
是否有可能得到一个"如果......"就像我上面试过的那样?
答案 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