awk - 如何在 awk 中打印记录的行号?
问题描述
我正在使用 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; }
}
我正在寻找的输出将是这样的:
[1]
data1 - good
foo bar
[9]
data3 - good
foo bar
color blue
有没有更好的方法来做到这一点,我没有看到?
解决方案
总的来说,我认为你的方法很好,不会认为它是 hackey。
您可能会考虑进行一些小的调整以使其更简单:
BEGIN {RS =""; FS="\n"; ORS="\n\n"; OFS=""; x=1}
!($1 ~ /bad/) { print "[", x, "]\n", $0; }
{ x += NF + 1; }
推荐阅读
- android - 在 Android Studio 中,如何为每种产品风格添加不同的 Manifest 文件?
- c# - C# .NET Core 3.1 OData:从 https 到 http 的意外更改 URI
- centrifuge - 连接到专用通道 сentrifuge 时如何更正错误?
- c - 插入链表出错
- scala - 使用列表中的多列过滤空格或空值
- .net - 如何使用流利的验证将来自 asp.net Web 应用程序的输入错误输入到我的 Index.cshtml 视图中?
- javascript - 单击时手风琴标题不起作用
- python - 忽略 NaN 的 Pandas 分组和转换
- postgresql - Postgres Jsonb 聚合
- python - URL 错误 404 找不到 Django 页面错误 x.html