Найти текст в файлах и получить необходимый контент - PullRequest
0 голосов
/ 26 декабря 2011

У меня много файлов access_log. Это строка из файла из них.

access_log.20111215:111.222.333.13 - - [15/Dec/2011:05:25:00 +0900] "GET /index.php?uid=01O9m5s23O0p&p=nutty&a=check_promotion&guid=ON HTTP/1.1" 302 - "http://xxx.com/index.php?uid=xxx&p=mypage&a=index&sid=&fid=&rand=1681" "Something/2.0 qqq(xxx;yyy;zzz)" "-" "-" 0

Как извлечь uid "01O9m5s23O0p" из строк, которые имеют "p = nutty & a = check_promotion", и вывести их в новый файл.

Например, файл «output.txt» должен быть:

01O9m5s23O0p
01O9m5s0999p
01O9m5s3249p
fFDSFewrew23
SOMETHINGzzz
...

Я попробовал:

grep "p=nutty&a=check_promotion" access* > using_grep.out

и

fgrep -o "p=nutty&a=check_promotion" access* > using_fgrep.out

но печатает всю строку. Я просто хочу получить UID.

Резюме:

1) Find the lines which have "p=nutty&a=check_promotion"

2) Extract uid from those lines.

3) Print them to a file.

Ответы [ 2 ]

2 голосов
/ 26 декабря 2011

Если ваши строки, которые имеют p=nutty&a=check_promotion, похожи по своей природе, тогда мы можем установить разделители и использовать awk, чтобы извлечь uid и поместить их в файл.

awk -v FS="[?&=]" '
$0~/p=nutty&a=check_promotion/{ print $3 > "output_file"}' input_file

Тест:

[jaypal:~/Temp] cat file
access_log.20111215:210.136.161.13 - - [15/Dec/2011:05:25:00 +0900] "GET /index.php?uid=01O9m5s23O0p&p=nutty&a=check_promotion&guid=ON HTTP/1.1" 302 - "http://xxx.com/index.php?uid=xxx&p=mypage&a=index&sid=&fid=&rand=1681" "Something/2.0 qqq(xxx;yyy;zzz)" "-" "-" 0 
[jaypal:~/Temp] awk -v FS="[?&=]" '
$0~/p=nutty&a=check_promotion/{ print $3 > "output_file"}' input_file
[jaypal:~/Temp] cat output_file 
01O9m5s23O0p
2 голосов
/ 26 декабря 2011

Сделайте именно это, в три этапа:

(отформатировано, чтобы избежать прокрутки)

grep 'p=nutty&a=check_promotion' access* \
| grep -o '[[:alnum:]]\{4\}m5s[[:alnum:]]\{4\}p' \
> output.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...