Как выбрать первое вхождение из двух шаблонов, включая их

Проблема с привилегиями параллельного порта :по умолчанию, он доступен только пользователям группы lp. Пользователю rootэто явно разрешено, а обычным пользователям — нет.

Добавление пользователя в группу lpделает параллельный порт доступным без sudo:

adduser <user-name> lp

После этого параллельный порт работает и я могу продолжить настройку.

2
18.07.2019, 15:39
2 ответа

Ваш первый пример sedне работает для второго и последующих блоков, потому что/!/q(обратная косая черта может привести к неопределенному поведению, поэтому я опускаю его )уже выполняется для первого !и скрипт останавливается там (то же самое для exitскрипта awk). Поэтому выполняйте его только после блока, используйте

sed -n '/2\/1\/6.2062/,/!/{p;/!/q;}'

Но простой

sed -n '/2\/1\/6.2062/,/!/p'

как и во второй попытке, также будет работать, если у вас нет проблем с потерей некоторых циклов процессора.

А для будущих скриптов я предлагаю использовать другой разделитель шаблона адреса, если он содержит косые черты типа

sed -n '\_2/1/6.2062_,/!/p'

Легче читать, да?

И да, вы также можете использовать!d:

sed '\_2/1/6.2062_,/!/!d'
0
27.01.2020, 22:26

В последнем изменении сценария awk:

p ; /!/{exit}

-

p {print; if (/!/) exit}

поэтому вы выходите после обработки интересующего вас блока, а не в конце первого блока в файле.

0
27.01.2020, 22:26

Теги

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