如何使用shell获取文本文件中最短的字符串

Spa*_*nST 3 linux shell string

假设我有一个如下的文本文件

abcd
aaaaaaa
gfgk
hahahahahahhahh
gf
Run Code Online (Sandbox Code Playgroud)

然后gf会被退回。有什么好主意吗?

Bkk*_*rad 10

Awk 非常适合这个:

awk '(NR == 1 || length < length(shortest)) { shortest = $0 } END { print shortest }'
Run Code Online (Sandbox Code Playgroud)

第一部分将“最短”变量设置为当前行,如果它是第一行或者长度比之前看到的最短行短。最后,最后一部分打印出shortest 的值。


nik*_*nik 7

假设您的每一行都包含一个字符的“单词”,
并且我们不介意让 shell 做更多的工作,
这是一个 AWK 解决方案。

# 让你的文本在`str.txt`

awk '{print length($1), $1}' str.txt | 排序 -nk 1 | 头-1

# 输出:2 gf ## 最短的字符串

您可以优化它以避免使用更多 AWK 进行排序。
如果每行有多个“单词”,则可以进一步调整。

另请注意,如果您有多个最短的字符串,这将为您提供其中之一。
你也可以做一些更多的技巧来获得它们。