отсортируйте файл на основе длины столбца/строки

Ваш ноутбук должен иметь /sys/class/backlight. Например, /sys/class/backlight/acpi_video0/brightness. Можно записать (повторяют) значения в этот файл для корректировки яркости.

cat /sys/class/backlight/acpi_video0/max_brightness > /sys/class/backlight/acpi_video0/brightness

Это установит яркость на максимум. Просто поместите его в init сценарий на начальной загрузке.

4
01.02.2013, 00:17
3 ответа

Можно сначала добавить другой столбец с количеством символов с awk, сделать sort и затем полоса добавила столбец:

awk '{printf "%d %s\n", length($1), $0}' file.txt | sort -n -k1,1 | sed -E -e 's/^[0-9]+ //'

1
27.01.2020, 21:02
  • 1
    Также см. этот ответ на Переполнении стека. Вам не нужно printf или sed там, на самом деле. –  Wildcard 12.01.2016, 11:10

Можно сделать это с основными инструментами оболочки, но если Perl доступен, можно выразить требование более непосредственно:

perl -l -e 'print sort {@a = split(/ /, $a, 2); @b = split(/ /, $b, 2);
                        length($a[0]) <=> length($b[0])} <>'

С Schwartzian преобразовывают (более эффективный для большого входа):

perl -l -e 'print map {$_->[0]}
                  sort {length($a->[1]) cmp length($b->[1])}
                  map {[$_, split(/ /, $_, 2)]} <>'

Если у Вас есть Python, код является более подробным, но немного более четким:

python -c 'import sys;
lines = sys.stdin.readlines();
lines.sort(key=lambda line: len(line.split()[0]));
sys.stdout.writelines(lines)'
0
27.01.2020, 21:02
$ awk -vOFS='\t' '{ print length($1), $0 }' file.in | sort -k1,1n -k2,2 | cut -f2-
.fe is bla bla bla
.se is for swedish domains
.abc is bla se 23 bla
.abs is bla bla 12
.jpg is pic extension

Это сортирует файл file.inпо длине данных в первом столбце, затем лексикографически по фактическим данным первого столбца (это не было специально запрошено в вопросе, но дает приятный штрих к результат ).

Код awkсоздаст вывод табуляции -с разделителями, например

4      .abs is bla bla 12
4      .abc is bla se 23 bla
3      .fe is bla bla bla
4      .jpg is pic extension
3      .se is for swedish domains

и это то, что sortсортирует по первому столбцу (численно ), а затем по второму столбцу (лексикографически ). Затем cutудаляет из него первый столбец.

0
27.01.2020, 21:02

Теги

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