2014-01-29 3 views
1

У меня проблема с невозможностью распечатать сообщение об ошибке, если найдено 0 записей.Awk Bash If-Else Issue

Это то, что я имею на данный момент.

function search_title 
{ 
    awk -F':' -v search="$Title" '$2 ~ search { i++;} END { printf "%d records found\n", i }' test.txt 
    awk -F':' -v search="$Title" '$2 ~ search { i++; printf "%s, %s,%s,%s,%s\n", $1, $2, $3, $4, $5 } END {}' test.txt 
} 

function search_author 
{ 
    awk -F':' -v search="$Author" '$2 ~ search { i++;} END { printf "%d records found\n", i }' test.txt 
    awk -F':' -v search="$Author" '$2 ~ search { i++; printf "%s, %s,%s,%s,%s\n", $1, $2, $3, $4, $5 } END {}' test.txt 
} 

function search_both 
{ 
    awk -F':' -v search="$Title" -v search1="$Author" '$1 ~ search && $2 ~ search1 { i++;} END { printf "%d records found\n", i }' test.txt 
    awk -F':' -v search="$Title" -v search1="$Author" '$1 ~ search && $2 ~ search1 { i++; printf "%s, %s,%s,%s,%s\n", $1, $2, $3, $4, $5 } END {}' test.txt 
} 

read -p $'Title: ' Title 
read -p $'Author: ' Author 

if [ "$Title" == "" ]; 
then 
search_author 
elif [ "$Author" == "" ]; 
then 
search_title 
else 
search_both 
fi 

мне нужно, если еще заявление, чтобы проверить, если счетчик равен 0 в AWK распечатке «Error! Книга не существует»

Например, ввода названия, как Daft входа Автора, как Линкен (Оба значения не в test.txt)

«Ошибка! Книга не существует» вместо Printf теперь, который является «0 найдено записей»

ответ

1

Вам не нужно 2 AWK Comman d в каждой функции:

Вы можете комбинировать оба AWK в одной команде:

awk -F':' -v search="$Title" -v search1="$Author" '$1 ~ search && $2 ~ search1 { 
     i++; 
     printf "%s, %s,%s,%s,%s\n", $1, $2, $3, $4, $5; 
     } 
     END { 
      if (!i) 
      print "Error! Book does not exists!"; 
      else 
      printf "%d records found\n", i; 
     }' test.txt 
+0

Можно ли сохранить дисплей счетчика для тех случаев, когда имеются записи? , такие как если (я! = 0) // Printf я запись нашел еще // если я == 0 // ошибка книги не существует это может быть сделано? – user3245403

+0

Я уверен проверить отредактированный код. – anubhava

+0

ничего себе! Это удивительный способ использования awk. Большое спасибо за помощь! – user3245403