Вид с неравным пробелом в первом столбце

AFAIR Вы должны, мог он в/etc/xinetd.d/tftp

 service tftp
 {
     ...
     server_args             = -s /your/location/to/tftpboot
3
01.04.2013, 22:46
3 ответа

Как другие прокомментировали, это поможет работать с данными, если это будет запятая разделила значения (CSV).

Вот мое решение для преобразования данных к CSV:

$ cat file | sed 's/ \([0-9]\)/,\1/g' 
Kuala Lumpur,78,56
Seoul,85,66
Karachi,95,75
Tokyo,85,60
Lahore,85,75
Manila,90,85

Это заменяет любое пространство, предшествующее цифре с запятой. \1 ссылается на группу ([0-9]), цифра после пространства. Оттуда можно использовать sort с -t аргумент для определения разделителя полей.

$ cat file | sed 's/ \([0-9]\)/,\1/g' | sort -t, -k2  
Kuala Lumpur,78,56
Tokyo,85,60
Seoul,85,66
Lahore,85,75
Manila,90,85
Karachi,95,75

Если требуется преобразовать назад в пробелы или сделать таблицу, вот два примера:

$ cat test | sed 's/ \([0-9]\)/,\1/g' | sort -t, -k2 | tr , ' '
Kuala Lumpur 78 56
Tokyo 85 60
Seoul 85 66
Lahore 85 75
Manila 90 85
Karachi 95 75

$ cat test | sed 's/ \([0-9]\)/,\1/g' | sort -t, -k2 | column -s, -t 
Kuala Lumpur  78  56
Tokyo         85  60
Seoul         85  66
Lahore        85  75
Manila        90  85
Karachi       95  75
3
27.01.2020, 21:10

Если можно измениться файл, чтобы иметь вкладку разделил столбцы, жизнь будет легче. Если изменение файла не является опцией, эта острота Perl сделает это для Вас:

perl -ne 's/\s+/\t/g; s/([a-z])\s([a-z])/$1 $2/ig; s/\t$/\n/; print;' file |
  sort -t$'\t' -nk3
Kuala Lumpur    78  56  
Tokyo   85  60  
Seoul   85  66  
Karachi 95  75  
Lahore  85  75  
Manila  90  85  

ОБЪЯСНЕНИЕ:

  • s/\s+/\t/g : измените ВСЕ пробелы на ВКЛАДКИ.
  • s/([a-z])\s([a-z])/$1 $2/ig : измените ВКЛАДКИ, которые являются между двумя буквами (никакие числа) назад к одиночным пробелам.
  • s/\t$/\n/ : первая замена представляет ВКЛАДКУ в конце каждой строки, возвратите это к символу новой строки (\n).

  • sort -t$'\t' -nk3 : используйте ВКЛАДКУ в качестве разделителя (вид имеет странный синтаксис там, я знаю, вижу здесь для получения дополнительной информации), и вид численно на третьем столбце.

3
27.01.2020, 21:10
awk '{print $NF,$0}' file.txt | sort -nr -k1 | cut -d' ' -f2-
  • $NF: количество полей, $0: целая строка
  • sort -nr: числовой обратный (убывание)
  • sort -k1: вид первым столбцом (разграниченный последовательностями пробелов и вкладок)
  • cut -d: разделитель (значения по умолчанию к вкладке)
  • cut -f2-: поля 2 для длительности (не сворачивает или разделяет разделители),
ruby -e 'puts readlines.sort_by{|l|l.split[-1].to_i}.reverse' file.txt
  • readlines = ARGF.readlines
  • split разделения на пробеле по умолчанию
3
27.01.2020, 21:10
  • 1
    +1 для простофили один, должен был думать об этом самостоятельно. Однако, включите некоторую информацию, что на самом деле делают эти команды. –  terdon♦ 02.04.2013, 02:35
  • 2
    @terdon я отредактировал ответ. –  Lri 02.04.2013, 03:14

Теги

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