У меня есть журнал, содержащий коды ошибок. Мне нужно изменить мой скрипт, чтобы он печатал только коды ошибок, а не текст сразу же рядом с ним.Печать только определенной строки в строке
egrep -e 'code\ [0-9]{2}' $error_file
Это код, который работал раньше. Однако некоторые коды ошибок, по-видимому, в журналах, теперь привязаны к строке, поэтому я вынужден распечатать эти символы.
Вот копия сценария:
#!/bin/sh
echo "Please enter input file name."
read input_variable
echo "You entered: $input_variable"
echo "Please enter a name of the new error file."
read error_file
touch $error_file
echo "The error file name is going to be $error_file"
echo "Processing printing only the error codes of ${input_variable} to ${error_file}."
egrep -e '\(code\ [0-9]{1,}\)' $input_variable | tee $input_variable.1 ;
awk '{print $12$13$14$15}' $input_variable.1 | tee $error_file ;
echo "Error Codes List: " ;
egrep -e 'code[0-9]{2}' $error_file | sort -u ;
echo "Common Errors - Count: "
echo "Code 2: " ; egrep -c 'code\ 2\)' $input_variable ;
echo "Code 10: " ; egrep -c 'code\ 10' $input_variable ;
echo "Code 11: " ; egrep -c 'code\ 11' $input_variable ;
echo "code 12: " ; egrep -c 'code\ 12' $input_variable ;
echo "Code 14: " ; egrep -c 'code\ 14' $input_variable ;
echo "Code 20: " ; egrep -c 'code\ 20' $input_variable ;
echo "Code 23: " ; egrep -c 'code\ 23' $input_variable ;
echo "Code 30: " ; egrep -c 'code\ 30' $input_variable ;
echo "Code 35: " ; egrep -c 'code\ 35' $input_variable ;
echo "Total Files Transferred: " ; egrep -c '^\[[0-9]{4}/[0-9]{2}/[0-9]{2}\ [0-9]{2}\:[0-9]{2}\:[0-9]{2}\]' $input_variable ;
echo "Count Complete."
echo " " ;
echo "The following are details for each error:" ;
egrep -e 'code\ [0-9]{1,}' $input_variable ;
echo "Done. Thank you for using this error report" ;
rm $input_variable.1
Вот пример журнала:
[2015/12/09 06:52:10] [12.123.456.789] [[email protected]] [R] idevs error: error in idevs protocol data stream (code 12) at io.c(1179) [sender=1.0.19]
[2015/12/09 03:01:05] [12.123.456.789] [[email protected]] [R] idevs error: timeout in data send/receive (code 30) at io.c(168) [sender=1.0.19]
Мой выходной ток:
Error Codes List:
(code30)atio.c(168)
datastream(code12)
Common Errors - Count:
Code 2:
0
Code 10:
0
Code 11:
0
code 12:
63
Code 14:
0
Code 20:
0
Code 23:
0
Code 30:
11
Code 35:
0
Total Files Transferred:
263
Count Complete.
The following are details for each error:
//prints each line with code\ [0-9]{1,} in the line//
Пожалуйста, помогите мне напечатать Ошибка Список кодов без дополнительных символов, так что это просто:
code12
code30
Спасибо!
Большое спасибо !!! Это сработало. – technerdius
Что-то классное Я бы хотел добавить к этому, чтобы добавить общее количество ошибок. Я не вижу способа сделать это, по крайней мере, с тем, как я написал сценарий. Можете ли вы мне помочь? – technerdius
Я думаю, что это отличная идея. Я ввел ваш код вместо моего общего раздела. Однако я получил './errors/script: строка 32: синтаксическая ошибка около неожиданного токена' <' ./errors/backerr1: строка 32: 'done <<(egrep -o' code \ [0-9] + ' $ input_variable) «У вас есть предложения? – technerdius