Я использую awk для проверки файла свойств и вывода только правильных строк. Я использую несколько разделителей в файле свойств.Проверка файла свойств с awk
Вот пример:
host1:/var/tmp/dir1/,host2:/var/tmp/dir2/
host2:/var/tmp/dir2/abc.tgz,host3:/var/tmp/
#example of wrong format
host1::/var/tmp/dir1,host2:/var/tmp/
host1:/var/tmp/dir1,:host2:/var/tmp/
Мои разделители, как показано в первой строке файла свойств выше :,:
только в том же формате, что и должен появиться только один раз.
Вот код awk, который я пытаюсь выполнить, но он всегда возвращает ошибку в строке для меня.
#!/usr/xpg4/bin/awk -f
BEGIN{
FS=":,:"
}
{
if ($0 ~/\[(.*)?([^%]*%[^%])(.*)?([^%]*%[^%])(.*)?([^%]*%[^%])]/) {
print "validated line " $0
next
} else {
print "error in line " $0
};
}
Я что-то упустил? или мое регулярное выражение слишком просто, чтобы захватить линию?
и выход всегда
ошибка в линии host1:/вар/TMP/dir1 /, host2:/вар/TMP/dir2/ ошибка в линии host2:/вар/TMP/dir2/ABC. tgz, host3:/var/tmp/
Вы говорите, что вы получаете сообщение об ошибке. Может быть, вы должны показать это нам? –
Также почему вы сравниваете с 'FS'? –
Какая проверка, точно, вам нужно сделать здесь? Граф полей? Имена полей? Значения полей? –