Скопируйте определенный текст из одного файла в другой с помощью GREP или SED

Протяните его через grep, как это

$ locate less | grep ^/bin
/bin/bzless
/bin/less
/bin/lessecho
/bin/lessfile
/bin/lesskey
/bin/lesspipe
/bin/zless

Изменить: другой ответ лучше, я не знал, что вы можете передать шаблон для поиска.

1
задан 11 June 2015 в 20:41

1 ответ

grep "OBJECT IDENTIFIER" testfile1.txt | awk '{sub("}","");print $5}'

Объяснение: поскольку вы запросили grep, я использую grep для получения нужной строки. Awk печатает пятый столбец (поскольку в awk по умолчанию столбцы разделены пробелами), который будет 795}. Функция sub просто заменяет } пустым. В результате вы сами извлекаете номер.

Объяснение : awk может сделать это самостоятельно без grep с помощью формы /SEARCHTERM/. Вот код:

awk ' /OBJECT IDENTIFIER/ {sub("}","");print $5}' testfile1.txt

Обратите внимание, что в обеих версиях кода вы полагаетесь на поиск строки и извлечение любого числа, расположенного между фигурными фигурными скобками, поэтому независимо

Версия с grep и cut

Немного более длинная альтернатива, если вы хотите ее удалить, пока она находится там, рядом с правой строкой. для первой команды это: grep "OBJECT IDENTIFIER" testfile1.txt | cut -d '{' -f2 | cut -d'}' -f1 | cut -d' ' -f2

cut команда делает то, что это звучит, - сокращения предметов после определенного разделителя. Итак, вот мы найдем нужную строку (вывод есть OBJECT IDENTIFIER ::= { enterprises 795 }), отрезаем все, что приходит после второго '{' (теперь выход enterprises 795 }), вырезание чего бы то ни было до '}' (теперь у нас есть enterprises 795), , и вырезать вторую вещь после '' (пробел) (теперь мы получаем 795 или любое другое число).

1
ответ дан 23 May 2018 в 19:55

Другие вопросы по тегам:

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