Я действительно хотел бы знать, как может я extrac некоторая строка от текстового файла с помощью sed, но я хотел бы извлечь строки в интервале:
Например, извлеките строку с номером i=1:2:100
Так, чтобы я мог extrac строки 1,3,5... и так далее до 100
Я не смог найти решение, один пробуя командой sed, и в сети я не сделал нашел что-либо
Я знаю, что, вероятно, существует лучший способ использовать Python, но я не очень знаком с ним!!! Благодарность заранее
Вы не можете сделать, это в чистом 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 ожидает, что вывод будет в stdin.
Если Вы хотите сохранить вывод в файл, просто добавьте > filename
к команде для перенаправления stdout sed в файл.