$ awk ' {k=length($0); a[k]=a[k] FS $0}
END {for(k in a) print k ":" a[k]}' file |
sort -n
1: a
2: is of
4: this file with
5: lines
6: sample length
7: several varying
您可以轻松地添加行号。。。
$ awk ' {k=length($0); a[k]=a[k] FS $0 "(" NR ")"}
END {for(k in a) print k":" a[k]}' file |
sort -n
1: a(3)
2: is(2) of(9)
4: this(1) file(5) with(6)
5: lines(8)
6: sample(4) length(11)
7: several(7) varying(10)
cat test.sh
this
is
a
sample
file
with
several
lines
of
varying
length
awk -v "len=2" -F "\n" '{if ((length($0))==len) print "line " NR " length is " len}' test.sh
line 2 length is 2
line 9 length is 2
8条答案
按热度按时间ifmq2ha21#
获取具有特定长度的行的一种简单方法是将egrep与regex一起使用:
在正则表达式中
"^.{2}$" the "."
(句点)表示任何字符,偶数空格,以及"2"
表示多少次"."
应该重复。"^"
以及"$"
表示一行的开始和结束。这个"-n"
参数要求egrep检索行号。bjg7j2ky2#
假设查找只是对符合长度标准的行进行计数,而不返回每个可用计数的数组(如第二个数据示例):
提示:
{print $0}
在本例中,是模式/条件匹配的默认操作NF == ( Length + 1)
n1bvdmb63#
使用gnu sed,您可以在输出中的单独行上打印行号:
哪里
!d
删除行,如果它与模式不匹配,=
将带有尾随换行符的行号添加到模式空间中,然后p
打印当前图案空间。似乎没有内置选项可以不打印的尾随换行符=
.3bygqnnd4#
awk
为救援干杯!您可以轻松地添加行号。。。
x4shl7ld5#
ApachePig。使用rank生成行号。通过比较行号和记录大小来筛选结果关系。
kyxcudwk6#
根据@dood建议
同样有效,基本上是
grep
长度相当整齐。根据显示的数字列表编辑、重新解释问题,
不按特定顺序返回结果
zf9nrax17#
我想这就是你想要的。
s2j5cfk08#
显示行
数着线
每条匹配线的详细信息
提示:
{print $0}
在本例中,是模式/条件匹配的默认操作NF == ( Length + 1)
(e) 为此,grep是最快、最好的解决方案,尤其是在大文件上