@Everal

Если как вывести 0 если Awk не нашел значение?

Как заставить awk выводить 0 если он не нашел значения в файле ?

cat /countCodes | awk ' /'$1'/ {print $1} '

Поиск идет по файлу

742401 200
   9553 404
   8594 304
   8490 301
    403 499
    311 302
     10 500
      7 408
      4 503
      3 400
3206 access_postdata.log


Скрипт ищет код например 500 и выводит значение 10
  • Вопрос задан
  • 75 просмотров
Решения вопроса 2
saboteur_kiev
@saboteur_kiev
build engineer
а какое именно значение вы ищете? Вы же именно "поиск" не проводите - awk просто обрабатывать входящие данные, без всякой проверки нашел он там что-то или нет.
Вы задачу поставьте более корректно - что именно за значения, пример файла. Может вам и не awk нужен
grep -oP "\s*\K.*(?=500)" /countCodes || echo "0"
Ответ написан
Если он не нашел то он вернет ошибочный код завершения с него можно и плясать, дешево и сердито.
cat /countCodes | awk ' /'$1'/ {print $1} ' ||  echo "0"
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@sergueik
вообще

THE AWK LANGUAGE
1. Program structure
An AWK program is a sequence of pattern {action} pairs and user function definitions.

A pattern can be:
BEGIN
END
expression
expression , expression
то есть

echo 'A B Z' | awk 'BEGIN{ status = 0} /A B C/ {status = 42 } END{ print "status=" status }

даст
status=0
и / a
echo 'A B С' | awk 'BEGIN{ status = 0} /A B С/ {status = 42 } END{ print "status=" status } '
даст
status=42
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы