TR может работать с regex?

Необходимо установить заголовки ядрa для компиляции модуля. Заголовки ядрa не являются частью источника ядра (или по крайней мере не все они), они сгенерированы, когда ядро компилируется, и некоторые из этих заголовков зависят от параметров компиляции.

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

После того как у Вас есть заголовки ядрa, /lib/modules/2.6.37.6/build должна быть символьная ссылка на каталог, который содержит include и arch diretories с заголовками, а также Module.symvers файл, содержащий таблицу символов ядра. Например:

ln -s /usr/src/linux-2.6.37.6 /lib/modules/2.6.37.6/build

6
16.08.2013, 00:01
4 ответа

Вы не можете заменить несколько вещей как это с tr. Я использовал бы sed сделать это вместо этого.

Пример

$ sed "s/^/'/" file.txt
'AAAA
'BBBB
'CCCC
'DDDD

Говорит для нахождения начала каждой строки (^) и замените его одинарной кавычкой (').

Если Вы хотите перенести "слова" в одинарные кавычки, можно использовать эту форму команды:

$ sed "s/\(.*\)/'\1'/" file.txt
'AAAA'
'BBBB'
'CCCC'
'DDDD'

На этот раз мы сохраняем что-либо на строке во временной переменной (\1). Мы затем заменяем строку этим '\1'.

Эта команда может быть сокращена до этого, использовать GNU определенные переключатели:

$ sed -r "s/^(.*)$/'&'/" file.txt
'AAAA'
'BBBB'
'CCCC'
'DDDD'
9
27.01.2020, 20:22
  • 1
    Для добавления конечной кавычки также, я изменю его к sed -r "s/^(.*)$/'&'/" file.txt. –  Miroslav Koškár 16.08.2013, 00:22
  • 2
    -r конкретный GNU. sed "s/.*/'&'/". Никакая потребность в ^ или $ или получать целый шаблон. основной метод –  Stéphane Chazelas 16.08.2013, 08:44
  • 3
    @StephaneChazelas - благодарит, я упомянул, что в моем ответе (GNU) и удалили избыточные символы привязки. –  slm♦ 16.08.2013, 15:58

tr для транслитерации. Одно популярное использование tr изменение случай строк:

$ echo 'this is a test' | tr a-z A-Z
THIS IS A TEST

Некоторая версия операционных систем tr, нужно a-z иметь форму [a-z], в этом случае это должна также быть кавычка:

$ echo 'this is a test' | tr '[a-z]' '[A-Z]'
THIS IS A TEST 

Информация Вы имеете info пакет установил в Вашей системе, страница TR имеет некоторые очень хорошие примеры и дальнейшее объяснение tr команда:

info coreutils 'tr invocation'

Поскольку, что Вы пытаетесь достигнуть Вас, вероятно, хотят использовать sed, жемчуг или awk.

Perl:

perl -pe "s/^/'/" file

для каждой строки, Соответствие запуск строки (^), замените '

Sed:

sed "s/^/'/" file

Подобный примеру жемчуга

Awk:

awk -v x="'" '{ print x$0 }' foo

Присвойте переменную x, чтобы быть ' и для каждой печати строки ' и затем целая строка

3
27.01.2020, 20:22

Нет, tr только для замены символами один за другим. Вы не можете добавить символы этот путь.

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

perl -pe "s/\w+/'$&'/"

С tr можно только, например, заменить одним видом кавычки другим видом:

tr \" \'

Те обратные косые черты только, чтобы сказать Вашей оболочке отправлять символ, как это и не пытающийся интерпретировать его сам.

Они не будут работать:

tr '"' '''
tr '"' '\''

Первый аргумент ('"') прекрасно, это - точно то же, чем \". Второй аргумент в обоих случаях не работает: Вы не можете заключить одинарные кавычки в кавычки с помощью одинарных кавычек в качестве вторых концов кавычки, заключение в кавычки и третья кавычка открывают новую, которая отсутствует. (поэтому Ваша оболочка открывает новую строку для ожидания недостающей кавычки конца.)

Но все это - просто материал оболочки und, не имеет никакого отношения tr.

2
27.01.2020, 20:22

Быстрое решение обычно использует самую простую утилиту с одной задачей.

tr простая утилита, но для чего-то еще: транслитерация (превращающий данный символы в другие), удаляя данный символы или сжимая символы.

Больше универсальных утилит как sed, awk или perl (по приказу размера), сделает это, но здесь, у Вас есть утилита с одной задачей, которая сделала бы это хорошо также: paste:

paste -d\' /dev/null file.txt /dev/null

Или:

:|paste -d\' - file.txt -
2
27.01.2020, 20:22

Теги

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