2013-03-27 4 views
0

Так что в основном у меня есть файл, чтобы понять, как писать это, что выглядит так.Проверка нескольких строк и вывод каких строк отсутствуют. (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` ` 
+0

Можете ли вы показать нам свой желаемый результат? что ты уже испробовал? – fedorqui

+0

Что представляет собой «недостающую строку»? – tink

+0

Знаете ли вы о 'diff' cmd? Он должен дать вам стандартизованный подход к поиску различий в файлах. Возможно, это не тот формат, который вы предусмотрели, но общий и стандартный инструмент в средах linux/unix. Удачи. – shellter

ответ

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] } 
} 
}