#linux #bash #awk
#linux #bash #awk
Вопрос:
Мне нужно фиксировать количество строк между каждым оператором УДАЛЕНИЯ.
DELETE FROM database.table
WHERE
@1=A
@2=B
@3=C
@4=D
@5=D
DELETE FROM database.table
WHERE
@1=A
@2=B
@3=C
@4=D
@5=D
DELETE FROM database.table
WHERE
@1=A
@2=B
@3=C
@4=D
@5=D
Поэтому я бы получил возвращенный статус «5»
Я пробовал следующее:
awk '/DELETE/{exit}flag;/WHERE/{flag=1}' delete_statements | wc -l
Но это работает только в том случае, если я удаляю первую строку в файле.
Ответ №1:
Чтобы пропустить первую строку из awk, просто добавьте условие:
awk 'NR>1 amp;amp; /DELETE/{exit}flag;/WHERE/{flag=1}'
~~~~
Ответ №2:
Попробуйте это :
awk '/WHERE/{next} !/DELETE/{flag } NR>1 amp;amp; /DELETE/{print flag;exit}' file
Вывод
5