GOOGLE ADS

пятница, 15 апреля 2022 г.

Вывести все строки между строкой, содержащей строку, и первой пустой строкой, начиная со строки, содержащей эту строку

Я пробовал awk:

awk -v RS="zuzu_mumu" '{print RS $0}' input_file > output_file

Полученный файл является точным input_file, но теперь первая строка в файле — zuzu_mumu. Как можно исправить мою команду?


Решение проблемы

Вывести все строки между строкой, содержащей строку, и первой пустой строкой, начиная со строки, содержащей эту строку

Я бы использовал GNU AWKдля этой задачи. Пусть file.txtконтент будет

Able
Baker
Charlie
Dog
Easy
Fox

потом

awk 'index($0,"aker"){p=1}p{if(/^$/){exit};print}' file.txt

выход

Baker
Charlie

Объяснение: используйте indexфункцию String, которая дает либо положение akerво всей строке ( $0), либо 0обрабатывает это как условие, поэтому оно используется как внутри akerстроки? Обратите внимание, что использование indexвместо регулярного выражения означает, что нам не нужно заботиться о символах со специальным значением, таких как, например, .. Если он устанавливает pзначение 1. Если pthen, если это пустая строка (соответствует началу строки, за которым следует конец строки), завершить обработку ( exit); printвся линейка как есть.

(проверено в gawk 4.2.1)

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...