2016-01-14 5 views
-1

Мне нужна помощь относительно awk print f в сценарии оболочки.Скрипт оболочки меню AWK

Пожалуйста, смотрите ниже моего сценария

#!/bin/sh 
date_time=`date '+%d-%b-%Y_%H:%M:%S'` 
usr="test" 

echo "Hai" | awk -V '{ 
printf("==========================================\n"); 
printf("|%10s|%10s|\n","Date" $date_time); 
printf("|%10s|%10s|\n","user" $usr); 
printf("==========================================\n"); 
}' 

Я хочу вывода, как показано ниже

============================== 
| date | 14-Jan-2016_16:49:40| 
| user | Test    | 
============================== 
+1

Вы пытаетесь изучить awk? Вы можете получить нужный результат, используя только printf – sjsam

ответ

1

Вы могли бы искать для этого:

#!/bin/sh 
date_time=`date '+%d-%b-%Y_%H:%M:%S'` 
usr="test" 
printf "==================================\n" 
printf "|%10s |%20s| \n" "Date" "$date_time" 
printf "|%10s |%-20s| \n" "User" "$usr" # here - before 20 is for left align 
printf "==================================\n" 

Если по какой-то причине awk является обязательным попробуйте следующие вещи:

#!/bin/sh 
date_time=`date '+%d-%b-%Y_%H:%M:%S'` 
usr="test" 
awk -v date_time="$date_time" -v usr="$usr" 'BEGIN{ 
printf "==================================\n" 
printf "|%10s |%20s|\n","Date",date_time 
printf "|%10s |%-20s|\n","User",usr 
printf "==================================\n" 
}' </dev/null 
+0

Вы должны, вероятно, указать все переменные, иначе 'printf' будет генерировать несколько строк вывода, и/или оболочка будет делать смешные вещи со значением при интерполяции. См. Далее http://stackoverflow.com/questions/10067266/when-to-wrap-quotes-around-a-variable – tripleee

+0

@ tripleee: Thankyou, point отметил :-) – sjsam

+0

спасибо за ваше предложение сэр. –

Смежные вопросы