UNIX:如何计算一行中的字符数,并查找具有相同字符数的任何行?

时间:2014-03-26 11:56:06

标签: unix count character line

你如何计算一行中的总字符数,返回数字,然后查找具有相似字符数的任何其他行?

所以,例如,输入:

this is a line
this is the second line
this is the third line

会返回输出

14    1
23    1
22    1

其中第一个数字是第一行中的字符数,第二个数字是该字符数出现的行数。

1 个答案:

答案 0 :(得分:1)

由于没有尝试自己尝试解决,我会给你一些提示,尝试使用awk

提示1:

  • awk有一个名为gsub的全局替换函数,它返回所做的替换次数。它的构造是gsub(regexp, replacement, target)
  • 如果您在正则表达式中使用/./并保留$0作为目标,它将替换该行的所有字符并返回所做的替换次数。
  • 捕获该返回值并将其用作数组的键并增加数组以保持计数。
  • END区块中,使用for (key in array)构造,打印keyarray[key]

提示2:

  • 您可以使用length()函数返回行的长度,并将其用作数组的键。
  • awk读取整个文件后,请按照上一步提示的最后一步操作。