Как запустить AWK в скрипте Bash? - PullRequest
2 голосов
/ 14 апреля 2009

Проблема связана с моим ответом здесь .

Я не могу заставить работать следующий код

#!/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?

Ответы [ 3 ]

3 голосов
/ 14 апреля 2009

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

2 голосов
/ 14 апреля 2009

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

2 голосов
/ 14 апреля 2009

Несколько случайных мыслей

  • Проверьте ваш путь --- тот, который используется в среде сценария. awk названо ли "awk" в вашей среде?
  • Рассмотрите возможность использования ЗДЕСЬ документов для нетривиальных скриптов
  • Вам нужно перенаправить вывод? Как насчет стандартной ошибки?
  • Стоит ли фиксировать состояние выхода из предыдущего процесса и сначала принять какое-то решение?
  • Из вашего сообщения об ошибке похоже, что вы могли бы использовать if [ -f FileToUse ]. Если вы точно не знаете, куда выводит wget вывод, возможно, вы захотите форсировать его (-O).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...