2016-04-08 1 views
0

Я могу напечатать блок символов, используя (cut -d) с указанием разделителя.Как напечатать диапазон символов в unix с помощью cut и grep?

# grep -i access.log| grep ' 500 '| cut -d\- -f1 

Но как я могу напечатать символы после определенного рисунка «address=tel%3A%2B»

Например: как печатать целые номера телефонов в этом файле?

begining of the line address=tel%3A%2B416xxxxxxx rest of the log 
begining of the line address=tel%3A%2B647xxxxxxx rest of the log 
begining of the line address=tel%3A%2B519xxxxxxx rest of the log 

...

+1

Я думаю, что 'sed' является инструментом использовать. Вы можете указать регулярное выражение для захвата. – totoro

ответ

0
sed -e 's,.*address=tel%3A%2B\([^ ]\+\).*,\1,g' <<EOF       
begining of the line address=tel%3A%2B416xxxxxxx rest of the log     
begining of the line address=tel%3A%2B647xxxxxxx rest of the log     
begining of the line address=tel%3A%2B519xxxxxxx rest of the log     
EOF 

Выход:

416xxxxxxx 
647xxxxxxx 
519xxxxxxx 
1

Я попытался cut -c печатать символы с определенной позиции в строке, и она работает, так как большинство линий следует идентичную картину. Положение линии начинается с 1.

# grep -i test.log| grep ' 500 '|cut -c1-5 

здесь 1: начальная позиция персонажа.

здесь 5: положение последнего символа для печати.

так, например, если:

#cat test.log 
this is address=tel%3A%2B416xxxxxxx 
this is address=tel%3A%2B647xxxxxxx 
this is address=tel%3A%2B519xxxxxxx 

#cut -c26-36 test.log 
416xxxxxxx 
647xxxxxxx 
519xxxxxxx 
0

Это не работа для Grep и/или вырезать, это работа для СЭД или AWK:

$ sed 's/.*address=tel%3A%2B\([^ ]*\).*/\1/' file 
416xxxxxxx 
647xxxxxxx 
519xxxxxxx 

$ awk '{gsub(/.*address=tel%3A%2B| .*/,"")}1' file 
416xxxxxxx 
647xxxxxxx 
519xxxxxxx 
+0

не могли бы вы это немного объяснить. Я не могу определить/\ и *, как он должен быть настроен для печати мне полезной части журнала, в котором я нуждаюсь. – Vcode

+0

Сценарии DO печатают определенную часть журнала, в котором вы нуждаетесь, просто запустите их на своем размещенном вводе образца. Извините, но это абсолютно фундаментальное решение sed и awk, вам нужно сделать небольшое чтение, прежде чем пытаться сделать какие-либо сценарии в UNIX, и люди, объясняющие основы, один из примеров на данный момент - не лучший способ узнать. Я рекомендую Bash Shell Scripting Recipes от Chris Johnson для основы сценариев оболочки (включая все, что вам нужно знать о sed), а затем Effective Awk Programming 4th Edition от Arnold Robbins, чтобы научиться хорошо пользоваться awk. –

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