LINUX.ORG.RU

Проблема c grep, если его запускать из консоли работает, в скрипте нет

 ,


0

3

Скрипт ищет ссылки в выдаче поисковика

current_page=`curl -v --silent -A Mozilla http:\/\/www\.google\.ru\/search\?q=$search_string\&amp\;gws_rd=cr\&amp\; --stderr - `#работает
echo $current_page > test.txt #работает
echo $current_page | grep -ioE "<cite>.*?</cite>" | sed 's/<[^>]*>//g' | grep -ioE "(https?:\/\/)?(www\.)?[-а-яa-z0-9_\.]{2,}\.(рф|[a-z]{2,4})" #работает

echo $current_page | grep -ioE "\/search\?q=[A-Z,0-9,%,+]+&amp;newwindow=1&amp;((ie=UTF-8&amp;prmd=ivns)|(biw=1440&amp;bih=500))&amp;ei=[A-Z,a-z,_,0-9,-]*&amp;start=[0-9][0-9]+&amp;sa=N" #команда не найдена 

Если взять последнюю строку и сделать прямо в консоли cat test.txt | последнее выражение - то работает, а в скрипте нет. При этом если в скрипте эту строку заменить на простое выражение cat test.txt | grep «class» - то не работает А если скопировать на следующую строку скрипта, то работает. Так ведут себя и shell и bash. Почему так происходит?



Последнее исправление: taomao (всего исправлений: 1)

Почему так происходит?

Ты скрипт писал в винде и потом копировал файл на линукс?

Комментировать сам скрипт не желаю, он говно: эта переменная, регексы в двойных кавычках, ...

anonymous
()
Ответ на: комментарий от anonymous

Ничего не в винде! Хотя была мысль, что это оконный менеджер какие нибудь артефакты оставляет, но доказательств сего нет.
Это макет, на нем техника отрабатывается, пока так. По ходу совершенствуется.

taomao
() автор топика

Почему так происходит ?

Видимо, какой-то символ, который надо заэкранировать, не заэкранирован. запусти с -x.

AS ★★★★★
()

У меня никаких «команда не найдена» нет.

> ./googlesrchlortaomao.sh linux
https://ru.wikipedia.org
https://ru.wikipedia.org
...UNIX
LinuxLINUX.RUwww.linux.ru
linuxLINUX.ORG.RU
https://www.linux.org.ru
нАЯСФДЕМХЪ.Linuxcenter.Ru
...www.linuxcenter.ru
КХРЕПЮРСПШ.ALT
ЯРПЮМХЖЮwww.altlinux.ru
https://habrahabr.ru
ОН-ПСЯЯЙХwww.linuxformat.ru
...help.ubuntu.ru
https://www.youtube.com
...Open
SecureпЕЙКЮЛЮwww.netbsd.org
/search?q=linux&amp;newwindow=1&amp;ie=UTF-8&amp;prmd=ivns&amp;ei=VSTgVujcN8Kn6ATBvbDwAg&amp;start=10&amp;sa=N
/search?q=linux&amp;newwindow=1&amp;ie=UTF-8&amp;prmd=ivns&amp;ei=VSTgVujcN8Kn6ATBvbDwAg&amp;start=20&amp;sa=N
/search?q=linux&amp;newwindow=1&amp;ie=UTF-8&amp;prmd=ivns&amp;ei=VSTgVujcN8Kn6ATBvbDwAg&amp;start=30&amp;sa=N
/search?q=linux&amp;newwindow=1&amp;ie=UTF-8&amp;prmd=ivns&amp;ei=VSTgVujcN8Kn6ATBvbDwAg&amp;start=40&amp;sa=N
/search?q=linux&amp;newwindow=1&amp;ie=UTF-8&amp;prmd=ivns&amp;ei=VSTgVujcN8Kn6ATBvbDwAg&amp;start=50&amp;sa=N
/search?q=linux&amp;newwindow=1&amp;ie=UTF-8&amp;prmd=ivns&amp;ei=VSTgVujcN8Kn6ATBvbDwAg&amp;start=60&amp;sa=N
/search?q=linux&amp;newwindow=1&amp;ie=UTF-8&amp;prmd=ivns&amp;ei=VSTgVujcN8Kn6ATBvbDwAg&amp;start=70&amp;sa=N
/search?q=linux&amp;newwindow=1&amp;ie=UTF-8&amp;prmd=ivns&amp;ei=VSTgVujcN8Kn6ATBvbDwAg&amp;start=80&amp;sa=N
/search?q=linux&amp;newwindow=1&amp;ie=UTF-8&amp;prmd=ivns&amp;ei=VSTgVujcN8Kn6ATBvbDwAg&amp;start=90&amp;sa=N
/search?q=linux&amp;newwindow=1&amp;ie=UTF-8&amp;prmd=ivns&amp;ei=VSTgVujcN8Kn6ATBvbDwAg&amp;start=10&amp;sa=N
> cat ./googlesrchlortaomao.sh
search_string=`echo "$1"`
current_page=`curl -v --silent -A Mozilla http:\/\/www\.google\.ru\/search\?q=$search_string\&amp\;gws_rd=cr\&amp\; --stderr - `
echo $current_page > test.txt
echo $current_page | grep -ioE "<cite>.*?</cite>" | sed 's/<[^>]*>//g' | grep -ioE "(https?:\/\/)?(www\.)?[-а-яa-z0-9_\.]{2,}\.(рф|[a-z]{2,4})"
echo $current_page | grep -ioE "\/search\?q=[A-Z,0-9,%,+]+&amp;newwindow=1&amp;((ie=UTF-8&amp;prmd=ivns)|(biw=1440&amp;bih=500))&amp;ei=[A-Z,a-z,_,0-9,-]*&amp;start=[0-9][0-9]+&amp;sa=N"
> bash --version | grep версия
GNU bash, версия 4.4.0(1)-rc1 (x86_64-unknown-linux-gnu)
> grep --version | grep GNU\ grep
grep (GNU grep) 2.23
> curl --version
curl 7.47.1 (x86_64-pc-linux-gnu) libcurl/7.47.1 OpenSSL/1.0.2g zlib/1.2.8 libidn/1.32
Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
Features: IDN IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP UnixSockets
> echo $LANG
ru_RU.KOI8-R

saahriktu ★★★★★
()
Ответ на: комментарий от sudopacman

да, так лучше, но для чистоты эксперимента через конвеер

taomao
() автор топика
Ответ на: комментарий от saahriktu

А терминал какой, я запускал в LXterminial (XFCE)?

taomao
() автор топика
Ответ на: комментарий от Elyas

Нашлась ошибка. Дело было в лишних байтах на месте пробела которые попали видимо при копировании из evernote.

$ cat grep_ok                                     
echo $current_page | grep
$ cat grep_fail                                   
echo $current_page | grep

$ diff grep_ok grep_fail                          
1c1
< echo $current_page | grep
---
> echo $current_page | grep


$ hexdump -v -e '7/1 "%5_ad:%-5_c" "\n"' grep_ok  
    0:e        1:c        2:h        3:o        4:         5:$        6:c    
    7:u        8:r        9:r       10:e       11:n       12:t       13:_    
   14:p       15:a       16:g       17:e       18:        19:|       20:     
   21:g       22:r       23:e       24:p       25:\n        :          : 

$ hexdump -v -e '7/1 "%5_ad:%-5_c" "\n"' grep_fail
    0:e        1:c        2:h        3:o        4:         5:$        6:c    
    7:u        8:r        9:r       10:e       11:n       12:t       13:_    
   14:p       15:a       16:g       17:e       18:        19:|       20:�    
   21:�       22:g       23:r       24:e       25:p       26:\n        : 

taomao
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.