sed -Переменные как позиции строк

EOL означает, что дистрибутив больше не получает никаких обновлений. Файлы на archive.debian.org не исчезнут в ближайшее время — большинство исторических выпусков Debian все еще доступны там ; подробности см. в файле README .

Мне неизвестно какое-либо конкретное «официальное» заявление на этот счет, но, насколько мне известно, дистрибутивы, перемещенные в архив, никогда не удаляются, и предполагается, что архив живет как минимум до тех пор, пока Debian проект.

0
05.10.2021, 22:01
2 ответа

Необходимо заменить двойные кавычки, как обсуждалось, но если файл содержит более одного шаблона, исходный сценарий также не работает. Приведенное выше решение работает хорошо, просто печатайте каждую строку между начальными и конечными шаблонами. Этот лайнер печатает только первое вхождение:

    sed -n '/pattern1/{:loop;p;/pattern2/q;N;s/.*\n//;b loop};' "$file"
0
06.10.2021, 12:25

Основная проблема с вашим кодом заключается в том, что вы ожидаете, что оболочка расширит ваши STARTи ENDпеременные в одной строке -в кавычках. Оболочка никогда бы этого не сделала, и это одно из основных различий между строками в одинарных и двойных -кавычках.

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

Однако,вы также, кажется, ожидаете, что ваши два конвейера grepвернут ровно один номер строки каждый, и в этом случае я не вижу причин для них, поскольку вы могли бы сделать эту форму sedнапрямую. Команды в sedпринимают адреса в виде номеров строк, регулярных выражений или их комбинаций, если команда принимает более одного адреса.

sed -n '/pattern1/,/pattern2/ p' "$FILE" >temp

или

sed '/pattern1/,/pattern2/ !d' "$FILE" >temp

Вам, вероятно, не следует сохранять свои конвейеры grep, но это нужно для того, чтобы добавить, что вы можете сократить их до чего-то, возвращающего номер строки из sedнапрямую.

start=$( sed -n '/pattern1/ { =; q; }' )

Приведенное выше даст вам номер первой строки, соответствующей шаблону pattern1. Это команда =, которая выводит номер текущей строки.

3
06.10.2021, 06:26

Теги

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