2009-04-14 6 views
2

Проблема связана с моим ответом here.Как вы можете запустить AWK в сценарии Bash?

Я не могу получить следующий код для работы

#!/bin/bash 
wget http://www.google.com/coop/cse?cx=017685108214920485934%3Aizx6pzojwka -O CSE-spanien 
awk '/^searches [1-9]* sites, including:/ { print $2 }' CSE-spanien 

Пример сообщения об ошибке [редактировать]

$./code 
--2009-04-14 19:01:32-- http://www.google.com/coop/cse?cx=017685108214920485934%3Aizx6pzojwka 
Resolving www.google.com... 74.125.79.103, 74.125.79.99, 74.125.79.147, ... 
Connecting to www.google.com|74.125.79.103|:80... connected. 
HTTP request sent, awaiting response... 200 OK 
Length: unspecified [text/html] 
Saving to: `cse?cx=017685108214920485934:izx6pzojwka.6' 

    [ <=>                            ] 8,096  --.-K/s in 0s  

2009-04-14 19:01:33 (78.0 MB/s) - `cse?cx=017685108214920485934:izx6pzojwka.6' saved [8096] 

./code: line 3: -O: command not found 
awk(57264) malloc: *** error for object 0x4eee0: Non-aligned pointer being freed (2) 
*** set a breakpoint in malloc_error_break to debug 
awk: cmd. line:1: fatal: cannot open file `/Users/Masi/Documents/test/CSE-spanien' for reading (No such file or directory) 

Как можно запустить AWK в Bash сценарий?

+0

Что пошло не так? –

ответ

3

Вам не хватает -O CSE-spanien в конце вашей строки wget. В результате CSE-spanien не существует - wget сохраняет его в формате HTML с именем файла cse?cx=017685108214920485934:izx6pzojwka.2.

+0

Спасибо за помощь! Проблемами были опция -O в wget и PATH на моем компьютере. –

2

Некоторые случайные мысли

  • Проверить вам путь --- он используется в среде сценария. Есть awk с именем «awk» в вашей окружающей среде?
  • Рассмотрите возможность использования HERE documents для нетривиальных сценариев
  • Нужно перенаправить вывод? Как насчет стандартной ошибки?
  • Должны ли вы захватить состояние выхода предыдущего процесса и сделать некоторые решения в первую очередь?
  • От вас сообщение об ошибке похоже, что вы можете использовать if [ -f FileToUse ]. Если вы не знаете наверняка, что хед wget выведет выход, вы можете его заставить (-O).
2

Проблема в том, что wget не создает файл CSE-spanien в текущем рабочем каталоге. Я предлагаю вам проверить, где находится файл, и добавить полный или относительный путь к файлу в вашей команде awk. Было бы также разумно проверить, существует ли ожидаемый файл (test -f CSE-spanien && awk ...)

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