我如何根据占用的行数对文本文件进行排序?
从:
他对她说:“亲爱的孩子,我和我的仆人能在这座小房子里过夜吗?”
“哦,是的,”女孩悲伤地说道,“你当然可以,但我不建议你这么做。别进去。”“为什么不呢?”王子问。
女孩叹了口气说:“我的继母是恶毒的人,她不喜欢陌生人。”
然后他意识到自己来到了一个女巫的房子,但因为天色昏暗,他无法再往前走,所以他进去了。无论如何,他并不害怕。老妇人坐在炉火旁的扶手椅上。她用红眼睛看着陌生人。“晚上好,”她嘶哑地说,
假装很友好。“坐下来休息。”她吹了吹正在小锅里煮东西的煤。女儿警告两人要小心,什么都不要吃,什么也不要喝,因为老妇人酿了邪恶的饮料。他们睡得很香,直到清晨。
经过长途跋涉,他们来到一座小镇,那里住着一位美丽而骄傲的公主。公主曾表示,只要有人能问她一个她无法解答的谜语,她就会嫁给他。但是,如果她解答了谜语,他的头就会被砍掉。公主有三天时间考虑,但她非常聪明,总能在最后期限前解开谜语。王子到达时,已经有九个人以这种方式死去。然而,他被公主的美貌迷住了,愿意为此冒生命危险。
到:
“经过长途跋涉,他们来到一座小镇,那里住着一位美丽而骄傲的公主。她曾表示,只要有人能向她提出一个她无法解答的谜语,她就会嫁给他。但是,如果她解答了谜语,他的头就会被砍掉。她有三天时间考虑,但她非常聪明,总是能在最后期限前解开谜语。王子到达时,已有九名男子以这种方式死亡。然而,他被公主的美貌迷住了,愿意为此冒生命危险。
假装很友好。“坐下来休息。”她吹了吹正在小锅里煮东西的煤。女儿警告两人要小心,什么都不要吃,什么也不要喝,因为老妇人酿了邪恶的饮料。他们睡得很香,直到清晨。
然后他意识到自己来到了一个女巫的房子,但因为天色昏暗,他无法再往前走,所以他进去了。无论如何,他并不害怕。老妇人坐在炉火旁的扶手椅上。她用红眼睛看着陌生人。“晚上好,”她嘶哑地说,
“哦,是的,”女孩悲伤地说道,“你当然可以,但我不建议你这么做。别进去。”“为什么不呢?”王子问。
他对她说:“亲爱的孩子,我和我的仆人能在这座小房子里过夜吗?”
女孩叹了口气说:“我的继母是恶毒的,她不喜欢陌生人。”
答案1
使用 GNU Awk 版本 4.0+
gawk '
BEGIN {RS=""; ORS="\n\n"}
{a[$0] = length($0)}
END {
PROCINFO["sorted_in"] = "@val_num_desc"
for (i in a) print i
}
' file.txt
请注意,这是根据字符数排序的,包括标点符号和空格。
答案2
使用这个不太优化的命令行:
cat -n notes.txt | sort -rn | head -6 >> result.txt && \
cat -n notes.txt | sort -rn | tail -5 | sort -n | head -3 | sort -rn >> result.txt && \
cat -n notes.txt | sort -rn | tail -5 | sort -n | tail -2 >> result.txt && \
sed -i 's/^\s*[[:digit:]]*\s*//g' result.txt
信息:它将整个文本分成几部分,然后进行排序并将它们放在一起,并删除用于排序的行号。
结果:
经过漫长的旅行,他们来到一座小镇,那里住着一位美丽而骄傲的公主。公主曾表示,只要有人能问她一个她无法解答的谜语,她就会嫁给他。但是,如果她解答了谜语,他的头就会被砍掉。公主有三天时间考虑,但她非常聪明,总是能在最后期限前解开谜语。王子到达时,已经有九个人以这种方式死去。然而,王子被公主的美貌迷住了,愿意为此冒生命危险。
假装很友好。“坐下来休息。”她吹了吹正在小锅里煮东西的煤。女儿警告两人要小心,什么都不要吃,什么也不要喝,因为老妇人酿了邪恶的饮料。他们睡得很香,直到清晨。
然后他意识到自己来到了一个女巫的房子,但因为天色昏暗,他无法再往前走,所以他进去了。无论如何,他并不害怕。老妇人坐在炉火旁的扶手椅上。她用红眼睛看着陌生人。“晚上好,”她嘶哑地说,
“哦,是的,”女孩悲伤地说道,“你当然可以,但我不建议你这么做。别进去。”“为什么不呢?”王子问。
他对她说:“亲爱的孩子,我和我的仆人能在这座小房子里过夜吗?”
女孩叹了口气说:“我的继母是恶毒的人,她不喜欢陌生人。”