Добавьте последовательные числа succintly и изящно индексировать строки

Закрепление на Дуге Linux

Загрузите tp_smapi модули с АУРА.

Сборка и установка: makepkg -i

Попытайтесь загрузить модуль:

$ sudo  modprobe -v tp_smapi   
insmod /lib/modules/2.6.38-ARCH/extra/thinkpad_ec.ko.gz 
WARNING: Error inserting thinkpad_ec (/lib/modules/2.6.38-ARCH/extra/thinkpad_ec.ko.gz): No such device
FATAL: Error inserting tp_smapi (/lib/modules/2.6.38-ARCH/extra/tp_smapi.ko.gz): No such device

Проверьте журнал sys:

$ dmesg | tail -1           
[ 1009.371778] thinkpad_ec: no ThinkPad embedded controller!

Править src/tp_smapi-0.40/thinkpad_ec.c поскольку в ответе krubo говорится, добавляя патч к пакету:

--- thinkpad_ec.c.orig  2011-05-15 13:35:28.556634244 -0700
+++ thinkpad_ec.c       2011-05-15 13:35:40.466634616 -0700
@@ -460,6 +460,7 @@
                TP_DMI_MATCH("IBM", "ThinkPad A30"),
                TP_DMI_MATCH("IBM", "ThinkPad T23"),
                TP_DMI_MATCH("IBM", "ThinkPad X24"),
+               TP_DMI_MATCH("LENOVO", "ThinkPad X120e"),
                { .ident = NULL }
        };
        return dmi_find_substring(DMI_DEV_TYPE_OEM_STRING,

Отредактируйте PKGBUILD для включения нового патча:

patch -Np1 < "$srcdir/thinkpad-x120e.patch"     

Удалите любой ранее созданный пакет, и восстановите и установите пакет (makepkg -i) с этим патчем

Загрузите модуль, и необходимо быть в бизнесе:

$ sudo modprobe  tp_smapi
$ dmesg | tail -1
[ 1735.966431] tp_smapi successfully loaded (smapi_port=0xb0).
$ ls /sys/devices/platform/smapi 
ac_connected  BAT0  BAT1  driver  modalias  power 
smapi_request  subsystem  uevent

3
08.03.2012, 06:05
6 ответов

Только для полноты этого списка, sed может также сделать это:

sed '=' questions | sed 'N;s/\n/. /'

Печально = управляйте печатает номера строки на отдельной строке, поэтому только разделенный sed вызов может украсить форматирование.

5
27.01.2020, 21:07

Это точно что nl для. Например, принятие file.txt содержит Ваш демонстрационный вход, и Вы хотите, чтобы он был похож на Ваш демонстрационный вывод, Вы могли сделать:

nl -nln '-s. ' file.txt

Страница справочника для nl глубже проникает в детали на его использовании. Это дает Вам большой контроль выходным форматом.

17
27.01.2020, 21:07
  • 1
    Ничего себе. Я использовал *IX с середины 1980-х, и я никогда не раньше или слышал о nl. –  Kyle Jones 08.03.2012, 06:37
  • 2
    я должен был искать его, но согласно FreeBSD, это датируется к SVR2. –  James Sneeringer 08.03.2012, 06:46
  • 3
    , конечно, не POSIX. Это не находится на OpenBSD. Хотя я знал, что это существовало прежде, но я буду настоятельно советовать для не использования его в сценариях. Немного "idx=0; поскольку я в cat file; действительно повторите $idx$i; idx =eval $idx + 1 ; сделанный" должен добиться цели (не протестировал, но конечно Вы видите точку). Вы могли использовать редактора как энергия/представление, чтобы посмотреть на файл и настроить его для печати номеров строки также, у Вас будут цвета синтаксиса также эй. –  Aki 08.03.2012, 07:10
  • 4
    @Aki: страница справочника FreeBSD от прогрессивных требований С 4.7 ВЫПУСКАМИ, которым это приспосабливает POSIX.1, и это перечислено в Единственной версии 2 Спецификации Unix. –  James Sneeringer 08.03.2012, 16:21
  • 5
    Для нумерации всей строки этому также нужно -ba. иначе это нумерует только непустые строки и все же все еще печатает непронумерованные пустые строки, означая, что номера строки не увеличивают для отражения фактического количества новых строк... Это фиксирует его: nl -nln -ba -s'. ' –  Peter.O 09.03.2012, 01:11

Я удивлен cat -n не был упомянут к настоящему времени.

13
27.01.2020, 21:07
  • 1
    Слишком стандартный. Это может сделать вещи портативными... –  Aki 08.03.2012, 07:13
  • 2
    , я просто упомянул это cat -n в другом комментарии. Я был удивлен что -n опция не является частью Единственной Спецификации Unix. –  D.Shawley 09.03.2012, 00:36

В Vim Вы могли добавить номера строки к фактическому тексту буфера как это:

:%s/^/\=printf('%5d. ',line('.'))

\= (см. :help sub-replace-expression) позволяет замещающей строке рассматриваться как выражение VimL. Выражение, используемое здесь, является простым форматированием текущего номера строки.

Вы могли сделать это немного более необычным путем автоматического вычисления и использования минимальной ширины (вместо “твердый кодированный” 5, как выше) для текущего количества строк в файле:

:%s/^/\=printf('%*d. ',len(line('$')),line('.'))

Или, лево-выровненный по ширине:

:%s/^/\=printf('%d.%*s ',line('.'),len(line('$'))-len(line('.')),'')

Конечно, если Вы просто хотите видеть номера строки и не хотите иметь их на самом деле в данных буфера, затем необходимо просто использовать

:set number

От оболочки Вы могли бы найти cat -n или pr -tn полезный.

4
27.01.2020, 21:07
  • 1
    Сладкий. Он мог даже отобразить команды на ключ. Но для первого примера я записал бы сценарий оболочки и выполнил бы его, чем открыл бы файл на энергии и ввел бы эту команду каждый раз (или нажал бы клавишу), и энергия выхода затем печатают мой файл. –  Aki 08.03.2012, 07:12

Не уверенный, что Ваши ограничения расценивают разделение между числом и данными, но я сделал бы: grep -n '^' questions. Это произвело бы:

1:Content
2:...


33:End Content
1
27.01.2020, 21:07
  • 1
    Используя просто . как regex, это не произведет пустые строки... Используя '.*' будет. –  Peter.O 08.03.2012, 10:10
  • 2
    Так будет ^ как regex. –  Ladadadada 08.03.2012, 19:13

Некоторые другие решения:

Точно, что Вы делали без временного файла:

seq 1 $(wc -l questions | cut -f 1 -d " ") | paste - questions

Но cat -n намного лучше как выше сбоев если questions изменение файла между вызовом к wc и paste.

Если Вы не хотите создавать процесс, Вы могли:

{ N=1; while read line; do printf "%d %s\n" $N "$line"; N=$(($N + 1)); done; } < questions

Но не пробуйте вышеупомянутое, если у Вас есть большой файл, особенно потому что следующее bash ошибка.

0
27.01.2020, 21:07
  • 1
    Можно сэкономить cut. Когда wc процессы выводы STDIN никакое имя файла: seq 1 $(wc -l < questions) | paste - questions –  manatwork 16.03.2012, 17:59
  • 2
    В этом случае сокращение не обрабатывает вывод STDIN, оно обрабатывает questions файл. –  jfg956 16.03.2012, 18:01

Теги

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