#grep #ack
#grep #подтверждение
Вопрос:
Под этим я подразумеваю, что я хочу выполнить поиск «thing1», а затем я хочу выполнить поиск «thing2» на основе положения «thing1». И я хочу отобразить их оба в результате в том порядке, в котором они находятся в coede.
например. Я нахожу «thing1» в строке 100. Затем я хочу выполнить поиск первого «thing2», который встречается перед «thing1». Затем я хочу отобразить оба из них в порядке «thing2», затем «thing1». Я хочу сделать это для каждого экземпляра «thing1», который я нахожу.
Причина этого в том, что я хочу искать определенные строки, которые, как я знаю, будут в списках (python), и я также хочу знать название списков. Итак, я подумал, что могу выполнить поиск строки, а затем также отобразить первый знак «= [«, который встречается перед строкой.
Итак, если файл имеет:
my_list = [
'item1',
'item2',
'item3',
]
my_other_list = [
'item4',
'item5',
'item3',
]
и создайте поиск, который ищет 'item3'
, а затем оглядывается назад, чтобы найти предыдущий '= ['
тогда вывод должен быть (не включая номера строк, которые будут помещены grep и ack):
my_list = [
'item3',
my_other_list = [
'item3',
Комментарии:
1. можете ли вы добавить образцы данных и требуемые выходные данные?
Ответ №1:
Я думаю, вы этого хотите:
awk '/=/{thing2=$0} /item3/{print thing2;print $0,"n"}' YourFile
Итак, каждый раз, когда вы видите an =
, вы запоминаете строку как thing2
. Когда вы видите item3
, что вы печатаете последнюю thing2
, которую вы видели, и текущую строку.
Пример вывода
my_list = [
'item3',
my_other_list = [
'item3',