Sort

根據數字的位置將數字內的數字相乘

  • October 14, 2018

我有這樣的數字列表:

0987656787689
2345453326780
3453212332345
1324532449876
1234532444568
3245321343456
1324354532376
1234532153457

我想根據第六位和第七位的數字相乘的結果對數字進行排序,所以結果是這樣的:

3245321343456
3453212332345
1234532153457
1234532444568
1324532449876
2345453326780
1324354532376
0987656787689

使用awk

$ awk '{ print substr($0,6,1)*substr($0,7,1) }' <file
30
15
2
6
6
2
20
6

根據上述結果對原始數字進行排序(這是評論中的後續問題):

$ awk '{ print substr($0,6,1)*substr($0,7,1) }' <file | paste - file | sort -n | cut -f 2
3245321343456
3453212332345
1234532153457
1234532444568
1324532449876
2345453326780
1324354532376
0987656787689

這會將乘法的結果與原始數字一起粘貼為兩個單獨的製表符分隔的列,然後按數字對其進行排序並提取第二列(原始數字)。

引用自:https://unix.stackexchange.com/questions/475321