Sorting lines from longest to shortestä¸çš„ç”案æ供了å„ç§æ–¹æ³•æ¥å°†æ–‡ä»¶çš„行从最长到最çŸæŽ’åºã€‚
我需è¦æš‚时将文件从最长到最çŸæŽ’åºï¼Œä¸ºBASH脚本æ供一些时间æ¥æ‰§è¡ŒæŸäº›æ“作æ¥ç¼–辑å„ç§å†…容,然åŽåœ¨BASH脚本完æˆåŽå°†æ–‡ä»¶æ¢å¤åˆ°åŽŸå§‹é¡ºåºã€‚ / p>
我如何首先将文件从最长到最çŸæŽ’åºï¼Œä½†ä¹‹åŽèƒ½å¤Ÿæ¢å¤è®¢å•ï¼Ÿ
ç”案 0 :(得分:4)
通过以下æ¥éª¤å¢žå¼ºlinked answer:
将长度和行å·æ·»åŠ 到æ¯è¡Œçš„å‰é¢ï¼ŒæŒ‰é•¿åº¦æŽ’åºï¼Œå‰ªåˆ‡é•¿åº¦ï¼ˆå°±åƒåœ¨é“¾æŽ¥çš„ç”案ä¸ä¸€æ ·ï¼‰
perl -ne 'print length($_)." $. $_"' file.txt | sort -r -n | cut -d ' ' -f 2- > newfile.txt
执行bash转æ¢ï¼ˆå¿½ç•¥æ¯è¡Œçš„第一个数å—)
如果由于æŸç§åŽŸå› ä½ æ— æ³•ä½¿ç”¨æ•°å—å‰ç¼€è¿›è¡Œæ— 定形翻译,那么将数å—拆分æˆä¸€ä¸ªå•ç‹¬çš„文件并将其åˆå¹¶ä¸ºåŽç¼€ã€‚
按行å·æŽ’åºï¼Œç„¶åŽå‰ªåˆ‡è¡Œå·ä»¥å°†æ–‡ä»¶æ¢å¤åˆ°ä¹‹å‰çš„状æ€ã€‚
sort -n newfile.txt | cut -d ' ' -f 2- > file.txt
ç”案 1 :(得分:2)
将原始行顺åºå˜å‚¨åœ¨å•ç‹¬çš„文件ä¸å¯èƒ½æ˜¯æ‚¨â€‹â€‹éœ€è¦çš„:
awk -v OFS='\t' '{print length($0), NR, $0}' infile |
sort -k1rn -k2n |
tee order.txt |
cut -f3- > sorted.txt
do stuff with sorted.txt then
cut -f2 order.txt |
paste - sorted.txt |
sort -n |
cut -f2- > outfile
ä½ ä¸èƒ½è¯´å‡ºä½ 想è¦ç”¨ç›¸åŒé•¿åº¦çš„线åšä»€ä¹ˆï¼Œä½†åœ¨è¿™ç§æƒ…况下,上é¢å°†ä¿ç•™åŽŸå§‹æ–‡ä»¶çš„顺åºã€‚如果这ä¸æ˜¯æ‚¨æƒ³è¦çš„,请使用sort -rn
å‘½ä»¤ï¼Œæ ¹æ®éœ€è¦ä¿®æ”¹-k
。