Sed, строки извлечения из текста

Я действительно хотел бы знать, как может я extrac некоторая строка от текстового файла с помощью sed, но я хотел бы извлечь строки в интервале:

Например, извлеките строку с номером i=1:2:100

Так, чтобы я мог extrac строки 1,3,5... и так далее до 100

Я не смог найти решение, один пробуя командой sed, и в сети я не сделал нашел что-либо

Я знаю, что, вероятно, существует лучший способ использовать Python, но я не очень знаком с ним!!! Благодарность заранее

0
задан 27 January 2020 в 17:55

1 ответ

Вы не можете сделать, это в чистом sed, но Bash+sed может сделать это.

sed -n $(for i in {1..100..2}; do echo -n " -e ${i}p"; done)

Объяснение

В sed можно распечатать строку, указанную ее числом при помощи p команда после номера строки, например. 1p печатает первую строку файла. Для отключения печати других строк добавьте -n опция.

Если необходимо указать несколько строк, т.е. несколько sed выражений, необходимо использовать -e перед каждым выражением.

Таким образом для строк 1, 3, 5, результат:

sed -n -e 1p -e 3p -e 5p

Генерация списка номеров строки

Однако это было бы довольно исчерпывающим для списка всех нечетных чисел меньше чем 100 вручную. Можно использовать Bash для генерации списка.

Команда echo {1..100..2} генерирует список всех нечетных чисел меньше чем 100. И можно использовать for команда для помещения чисел в необходимое окружает:

$ for i in {1..100..2}; do echo -n " -e ${i}p"; done
 -e 1p -e 3p -e 5p -e 7p -e 9p -e 11p -e 13p -e 15p -e 17p -e 19p -e 21p -e 23p -e 25p -e 27p -e 29p -e 31p -e 33p -e 35p -e 37p -e 39p -e 41p -e 43p -e 45p -e 47p -e 49p -e 51p -e 53p -e 55p -e 57p -e 59p -e 61p -e 63p -e 65p -e 67p -e 69p -e 71p -e 73p -e 75p -e 77p -e 79p -e 81p -e 83p -e 85p -e 87p -e 89p -e 91p -e 93p -e 95p -e 97p -e 99p

Включать результат этого for команда в другую команду, используйте замену команды: $(command)

Передача входа к sed

Если Вы хотите передать файл sed, обеспечьте его как последний параметр. Иначе sed ожидает, что вывод будет в stdin.

Сохранение вывода в файл

Если Вы хотите сохранить вывод в файл, просто добавьте > filename к команде для перенаправления stdout sed в файл.

1
ответ дан 30 January 2020 в 23:29

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

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