我正在尝试从一个非常庞大的文档中提取一些信息。该文件遵循以下模式:
'>Title 1'
0 200, >name [numbers&letters]
1 200, >name [numbers&letters]
2 200, >name [numbers&letters]
'>Title 2'
0 200, >name [numbers&letters]
1 200, >name [numbers&letters]
...
'>Title 600.000'
对于Title
之间的每组行,我需要打印3个以制表符分隔的列
Title
name
0
开头) - 在示例中,数字为200
我正在尝试使用Bash和awk / sed,但我无法为此任务定义一种循环。有任何想法吗?
答案 0 :(得分:2)
未经测试但应该关闭:
awk -F'[ ,>]+' '
/^.>/ {
if (count != "") { printf "%s %d %d\n", name, number, count }
count = 0
name = number = ""
next
}
NF {
if (++count == 1) { number = $2; name = $3 }
}
END {
if (count != "") { printf "%s %d %d\n", name, number, count }
}
' file
答案 1 :(得分:1)
awk '/^.>/{t=$0;next} NF{a[t]++} $1=="0"{b[t]=$2} END{for (i in a) print i,a[i],b[i]}' file