Как напечатать текст между первым появлением пары строк? [дубликат]

bc выдаст 1 если условие истинно

проверка должна быть

if [ $( bc <<< "test" ) == 1 ]

чтением страницы руководства о [[ указывает, что это будет проверять длину строки, это может быть не то, что вам нужно.

1
29.04.2017, 16:47
2 ответа

Вы можете использовать следующую команду sed для этой задачи

sed '/-----END CERTIFICATE-----/q' /etc/nginx/cert.pem

q— это код выхода, который указывает sed выйти. Поэтому sed будет печатать с начала файла и завершит работу, когда встретится шаблон «-----END CERTIFICATE -----». Это приводит к остановке в конце первого сертификата.

Также нет необходимости использовать канал для перенаправления вывода cat на sed. Просто укажите имя файла в команде sed.

Источник-http://www.theunixschool.com/2011/09/sed-selective-printing.html

4
27.01.2020, 23:14

Вы почти достигли цели:

sed -ne '
   /-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p      # got the range, ok
   /-END CERTIFICATE-/q                            # bailing out soon as the cert end seen
' /etc/nginx/cert.pem

Но обратите внимание, что строки маркеров начала и конца сертификата также являются частью вывода.

5
27.01.2020, 23:14

Теги

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