我有一個帶有此文本的 file.txt:
hello my name is John: 4
hello my name is Loi: 23
hello my name is Joi: 45
hello my name is Jordan: 476
hello my name is Manu: 98
我想命令這個檔案稍后回顯它,我希望它是這樣的:
hello my name is Jordan: 476
hello my name is Manu: 98
hello my name is Joi: 45
hello my name is Loi: 23
hello my name is John: 4
我該怎么做?我知道 ita 可以用 sort -n 來完成,但我需要反過來,問題是它有文本...... 謝謝(檔案的編號在不同的行上)
uj5u.com熱心網友回復:
您可以在此處使用“裝飾-排序-取消裝飾”模式:
awk '{print $NF "\t" $0}' file.txt | sort -nr -k1,1 | cut -f 2-
uj5u.com熱心網友回復:
如果您反轉檔案,則可以從數字中排序并反轉
$ sed 's/[^0-9]*\(.*\)/\1 &/' input_file | sort -rn | sed 's/[^a-z]*\(.*\)/\1/'
blabla 45
blabla 23
blabla 12
blabla 5
blabla 4
uj5u.com熱心網友回復:
sort 有一個“key”引數,可讓您指定要排序的“欄位”。我不確定這是否適用于所有版本……在所有 shell 中……但是當您只想要答案時,它非常適合一次性使用。
sort -n -k 6
uj5u.com熱心網友回復:
使用GNU awk按數字降序對最后一列進行排序:
awk '{
row[NR]=$0
last[NR]=$NF
}
END{
PROCINFO["sorted_in"]="@val_num_desc";
for(i in last)
print row[i]
}' file
作為一行:
awk '{ row[NR]=$0; last[NR]=$NF } END{ PROCINFO["sorted_in"]="@val_num_desc"; for(i in last) print row[i] }' file
輸出:
你好,我叫喬丹:476 你好,我叫馬努:98 你好,我叫 Joi:45 你好,我叫洛伊:23 你好,我叫約翰:4
有關更多排序演算法和8 個強大的 Awk 內置變數 – FS、OFS、RS、ORS、NR、NF、FILENAME、FNR,請參閱8.1.6 使用帶有 gawk 的預定義陣列掃描順序
uj5u.com熱心網友回復:
您只需使用一個排序命令即可:
sort -t : -n -r -k2 file.txt
此命令按冒號 (-t :) 分割每一行,并在反向模式 (-r) 中按第二個欄位 (-k2) 排序。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/363384.html
標籤:猛击
