#!/bin/bash
while read line; do
((histogram[${#line}]++))
done < file.txt
echo "Length Occurrence"
for length in "${!histogram[@]}"; do
printf "%-6s %s\n" "${length}" "${histogram[$length]}"
done
如果您允许交换列,并且不需要标题,那么可以使用以下简单的方法: 第一个月 (没有任何sed或awk的高级技巧)将工作。输出是: 需要记住的一件重要的事情是:wc -c计算的是字节数,而不是字符数,并且不会给予包含多字节字符的字符串的正确长度。因此使用wc -m。 参考文献: man uniq(1) man sort(1)的 man wc(1)的
7条答案
按热度按时间wxclj1h51#
这
awk
计算行长度,然后sort -n
对(数字)行长度进行排序,最后uniq -c
。字符串
在输出中,第一列是具有给定长度的行数,第二列是行长度。
ruoxqz4g2#
纯awk
字符串
xtfmy6hx3#
使用
bash
数组:字符串
示例运行:
型
lxkprmvk4#
字符串
Output
型
vulvrdjw5#
如果您允许交换列,并且不需要标题,那么可以使用以下简单的方法:
第一个月
(没有任何
sed
或awk
的高级技巧)将工作。输出是:需要记住的一件重要的事情是:
wc -c
计算的是字节数,而不是字符数,并且不会给予包含多字节字符的字符串的正确长度。因此使用wc -m
。参考文献:
man uniq(1)
man sort(1)的
man wc(1)的
rxztt3cl6#
试试这个:
字符串
如果你想要最长的长度:
型
您可以使用-exec选项将上面的合并命令与find命令结合使用。
laik7k3q7#
你可以通过使用基本的unix工具来实现这一点:
字符串
如何工作?
1.下面是源文件:
1.将源文件的每一行替换为其长度:
1.对长度出现的次数进行排序和计数:
1.交换并格式化数字: