如何按字符串长度对单词列表进行排序?

如何按字符串长度对单词列表进行排序?

有一个像这样的单词表;

123
b
1
4rr
f
k3j3
gg

然后我需要按字符串长度对这些单词进行排序(无论以数字还是字符串开头都可以)

输出应该是这样的:

b
1
f
gg
123
4rr
4rr

是否有一个排序命令可以让我做到这一点?

答案1

我假设您想在命令行上执行此操作。

大多数命令行工具以基于行的方式工作,因此使用 、和很简单awk,例如sortcut另一个问题

awk '{ print length, $0 }' testfile | sort -n | cut -d" " -f2-

分解:

# Print line-length and the line
awk '{ print length, $0 }' testfile |

# Sort numerically by line-length
sort -n |

# Remove line-length number
cut -d' ' -f2-

输出:

1
b
f
gg
123
4rr
k3j3

请参阅man awkinfo sort以及info cut了解更多信息。

相关内容