【发布时间】:2021-07-16 09:55:38
【问题描述】:
大家
我正在寻找一种方法来保存满足以下条件的 txt 文件中的记录:
这是数据的例子:
aa bb cc
11 22 33
44 55 66
77 88 99
aa bb cc
11 22 33 44 55 66 77
44 55 66 66
77 88 99
aa bb cc
11 22 33 44 55
44 55 66
77 88 99 77
...
基本上,它是一个文件,其中一条记录总共有 5 行,4 行包含带有制表符分隔符的字符串/数字,最后是新行 \n。
记录的第一行总是有 3 个元素,而第 2 行第 3 行和第 4 行的元素个数可以不同。
我需要做的是删除每条记录(5行块),其中第二行中的元素总数> 3(我不关心所有其余行中的元素数)。该示例的输出应如下所示:
aa bb cc
11 22 33
44 55 66
77 88 99
...
所以只有我有 3 个元素的记录被保存并记录在新的 txt 文件中。
我尝试通过像这样修改 FS 和 RS 值来使用 awk:
awk 'BEGIN {RS="\n\n"; FS="\n";}
{if(length($2)==3) print $2"\n\n"; }' test_filter.txt
但if(length($2)==3) 不正确,因为我应该计算第二个字段中的条目数而不是计算长度,我找不到该怎么做.. 任何帮助都会非常感激!
提前致谢,
【问题讨论】:
标签: bash if-statement awk