[英]linux sorting of lists by their last parts by using sort command
如何使用sort
或任何相關命令對如下列表進行排序?
12.ale.panal.sel.blr.teta.hf.ew.rr.lwq.ors.2018
34.ev.we.ars.lmn.2017
5.lam.bere.meto.belagn.hede.we.e.2020
54.arad.met.kal.sil.tek.br.yz.2005
我想按照年份的最后一個單詞對它們進行排序? 注意基本上類似於 sort -t。 -k-1 雖然 -1 是不允許的。 任何命令只是為了解決最后一部分?
在每個類似中具有不同數量的字段會使它變得更加復雜。
此解決方案使用GNU datamash反轉每行的字段,以便可以按第一列排序,然后將其返回到原始順序:
$ datamash --no-strict -t. reverse < input.txt | sort -t. -k1,1n | datamash --no-strict -t. reverse
54.arad.met.kal.sil.tek.br.yz.2005
34.ev.we.ars.lmn.2017
12.ale.panal.sel.blr.teta.hf.ew.rr.lwq.ors.2018
5.lam.bere.meto.belagn.hede.we.e.2020
或者使用awk
的類似方法將最后一列復制到新的第一列sort
,然后cut
以刪除第一列:
awk -F. '{ printf "%s\t%s\n", $NF, $0 }' input.txt | sort -k1,1n | cut -f2-
$ sed -E 's,([0-9]*$),#\1,' data | sort -t# -n -k 2,2 | sed 's,#,,'
54.arad.met.kal.sil.tek.br.yz.2005
34.ev.we.ars.lmn.2017
12.ale.panal.sel.blr.teta.hf.ew.rr.lwq.ors.2018
5.lam.bere.meto.belagn.hede.we.e.2020
解釋:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.