我正在使用awk来处理多行记录,每个记录的字段数量是未知的。这是为了在非常大的文件中帮助过滤记录,因此知道返回记录的行号将很有帮助。我尝试为每个记录递增一个变量,但那似乎不太妥当,有更好的方法吗?
数据示例(包括行号):
1 | data1 - good
2 | foo bar
3 |
4 | data2 - bad
5 | foo bar
6 | pet cat
7 | name snuggles
8 |
9 | data3 - good
10| foo bar
11| color blue
代码示例:
BEGIN {RS =""; FS="\n"; ORS="\n\n"; OFS=""; x=0}
{
{ x += NF + 1; }
{ if ($1 ~ /bad/) { next; } }
{ print "[", x - NF, "]\n", $0; }
}
我要的输出结果应该像这样:
```html
我要的输出结果应该像这样:
```[1]
data1 - good
foo bar
[9]
data3 - good
foo bar
color blue
有没有更好的方法来完成这件事,我可能没想到?