Проверка нескольких строк и вывод пропущенных строк. (Bash)

Так что в основном у меня есть файл, для понимания того, как написать это, это выглядит так.

Start:
       First line of text
       Second line of text
Bin:
       Third line of text
       Four  line of text 

Что мне нужно сделать, это написать скрипт, который проверяет эти строки и выводит все пропущенные строки.

Исходя из моих предположений, я предположил бы, что это будет включать в себя awk или grep, который будет проверять, есть ли каждая строка, и набор операторов if, которые говорят, что если этого не существует, то выводят, какой строки не существует.

Любые указатели о том, как начать это? Вот то, что я до сих пор пробовал с этим маленьким psuedocode-ish. `

 str1=$(awk '/Start:/' /some/file)
 str2=$(awk '/First line of text/' /some/file) 
 str3=$(awk '/Second line of text/' /some/file)

if $str1 == '' then
   print $str1 'does not exist'
elif $str2 == '' then
   print $str2 'does not exist'
else $str3 == '' then 
   print $str3 'does not exist'
fi`    `

1 ответ

Примерно так должно напечатать недостающие строки с помощью AWK:

BEGIN {
 a[i++]="Start:"
 a[i++]="First line of text"
 a[i++]="Second line of text"
}

// {
 for (s in a) {
  if (match($0,a[s]) ) { a[s]="" }
 }
}

END {
 for (s in a) {
  if (a[s] != "") { print a[s] }
 }
}
Другие вопросы по тегам