Как сортировать Список с номерами и нулевыми значениями в порядке возрастания?

Измените свои репозитории на:

deb http://http.kali.org/kali kali main contrib non-free deb http://security.kali.org/kali-security kali / обновляет main contrib non-free

Затем я бы порекомендовал просто использовать gedit, который находится в репозиториях; в противном случае вам следует собрать notepadqq из исходного кода ::

$ git clone https://github.com/notepadqq/notepadqq.git $ cd notepadqq notepadqq $ ./configure --prefix / usr notepadqq $ make notepadqq $ sudo make install

per: https://github.com/notepadqq/notepadqq

1
17.10.2018, 11:22
3 ответа

С этим входным образцом:

$ cat infile
 2     0.9000      value 1
 3     23          value 2
 4                 value 3
 5     1           value 4
 6     2           value 5
 7     5           value 6
 8                 value 7
 9     -0.9000     value 8
 10    -23         value 9
 11                value 10
 12    -1          value 11
 13    -2          value 12
 14    -5          value 13

Используйте эту команду:

$ sort -k 3n,3n -k 2g,2g infile

Что приводит к этому результату:

 10    -23         value 9
 14    -5          value 13
 13    -2          value 12
 12    -1          value 11
 9     -0.9000     value 8
 2     0.9000      value 1
 5     1           value 4
 6     2           value 5
 7     5           value 6
 3     23          value 2
 4                 value 3
 8                 value 7
 11                value 10

Это отличается от ответа Expected outputтем, что строка 11 value 10идет в самом конце, а не перед строкой 4 value 3. Пожалуйста, обновите вопрос, если есть причина для заказа 11 < 4 < 8или 10 < 3 < 7или если это больше связано с проблемой, чем предполагает образец данных.

0
27.01.2020, 23:23

sort -g input.data | grep [0-9] && grep -v [0-9] input.data

  1. Сортировать
  2. Фильтровать только числа
  3. Добавьте оставшиеся значения NULL, инвертировав команду grep
1
27.01.2020, 23:23

Вы можете направить результат через соответствующий -постпроцессор. Вот один, который я написал в sed:

#!/bin/sed -f

# Move any null into hold space
/^$/{
H
d
}

# Insert nulls after last line
$G
# Delete an extra newline this introduces
$s/\n//

Если ваш sortдействительно пишет <NULL>, а не пустую строку, вам нужно изменить шаблон /^$/на /^<NULL>$/.

Демо

sort -g <<EOF |./475768.sed 
0.9000
23
      
1
2     
5
  
-0.9000
-23
 
-1
-2
-5
EOF
-23
-5
-2
-1
-0.9000
0.9000
1
2
5
23


 
2
27.01.2020, 23:23

Теги

Похожие вопросы