Учитывая этот файл какinput
:
key1=value1
key2=value2
key3=
=value3
key4=value4
Мы можем использовать =
как разделитель полей дляawk
:
$ awk -F= '!($1 && $2 && NF==2) { print "File failed validation on line " NR; exit 1} { print $1, $2 }' input
key1 value1
key2 value2
File failed validation on line 3
Чтобы выдавать сообщения об ошибках проверки в стандартную ошибку, оператор print
можно изменить, а для продолжения обработки после обнаружения ошибки измените оператор exit
на оператор next
:
$ awk -F= '!($1 && $2 && NF==2) { print "File failed validation on line " NR | "cat 1>&2"; next } { print $1, $2 }' input
[stdout] key1 value1
[stdout] key2 value2
[stdout] key4 value4
[stderr] File failed validation on line 3
[stderr] File failed validation on line 4
Проверка выполняется в три этапа; если какой-либо из этих критериев не соблюдается, выдается ошибка, и в первом примере выполнение прерывается с ошибкой -код выхода состояния:
$1
-Убедитесь, что (в языке входной спецификации )есть «ключ» $2
-Убедитесь, что (в терминологии входной спецификации )есть «значение» NF==2
-Убедитесь, что полей всего два; вышеупомянутые «ключ» и «значение» Правильный ответ из комментариев:
Обновление, вероятно, не установило пакет libapache2-mod-php7.3
, необходимый для интеграции php7.3
в apache2
.
Чтобы проверить, установлен ли он уже, запустите
dpkg -l | grep ^i | grep libapache2-mod-php7.3
Если это ничего не возвращает, его необходимо установить.
apt install libapache2-mod-php7.3
Затем отключите старый модуль apache2
и активируйте новый :
a2dismod php7.0 && a2enmod php7.3 && systemctl restart apache2