в gawk, работает под виндой как вывести в файл

Этот вопрос специфичен для gawk, работающего на моем компьютере с Windows (64-разрядная версия), на котором у меня есть инструменты GNU в UNXUTILS, которые я вызываю из командной строки (похоже, у многих нет CygWin).

Изучил awk. Раньше мне приходилось проверять замену одинарных кавычек двойными в примерах AWK и т. д., чтобы заставить их работать под моим gawk. Но никакая небольшая переделка не заставит строку, прокомментированную ниже, работать. Любые рекомендации, предложения попробовать, приветствуются. Спасибо. Лучший, - Мерджи

  END  { 
         for (key in order_qty) { print key, "O", order_qty[key]; }
         for (key in trade_qty) { print key, "T", trade_qty[key]; }
         for (key in dly_UE_qty) { print key, "UEQ", dly_UE_qty[key]; }
             #    for (key in dly_UE_qty) { { print key, "UEQ", dly_UE_qty[key]; } > 
             #        "..\Test_Output\just_Test_daily_Unexecuted_quantity.txt" }
             # note, above 2 commented lines are the one problem line
        print NR, "records processed."
        }

Также только что попробовали заменить "..\Test_Output\just_Test_daily_Unexecuted_quantity.txt" просто на "just_Test_daily_Unexecuted_quantity.txt"... Это тоже не работает. Так что проблема может заключаться не только в том, как указан путь.

Также попробовал (i) двойную обратную косую черту вместо одного (ii) абсолютного пути вместо относительного пути (iii), помещая «> output_file» вне последней скобки «}», а не внутри. Ничего не работает.

Погуглил «указание пути в GNU awk под Windows», и я получил только ссылки о том, как установить путь при установке, чтобы инструменты GNU работали. Ничего не связано с указанием полного пути для экспорта вывода из awk.

Большинство других вещей, которые я использую в GNU (различные фильтры, конвейеры), и 99% примеров awk работают просто отлично. Невозможно подключиться к оболочке, хотя номинально этот пакет GNU для Windows поставляется с sh и zsh. Лучший, - Мерджи


person Murgie    schedule 19.01.2014    source источник


Ответы (1)


У меня нет среды, которую вы используете, чтобы подтвердить это, я думаю, что все, что отсутствует, - это символ продолжения строки. Пытаться

END  { 
     for (key in order_qty) { print key, "O", order_qty[key]; }
     for (key in trade_qty) { print key, "T", trade_qty[key]; }
     for (key in dly_UE_qty) { print key, "UEQ", dly_UE_qty[key]; }
     for (key in dly_UE_qty) { { print key, "UEQ", dly_UE_qty[key]; } >\ 
         "..\Test_Output\just_Test_daily_Unexecuted_quantity.txt" }
     # ------ make sure \ is last char on the line, no spaces, tab! -^^^X
    print NR, "records processed."
    }

IHTH

person shellter    schedule 19.01.2014
comment
@shelter Это не продолжение. На самом деле линия целая. Также попытался разорвать косую черту продолжения, как вы показали. Неудачно. Спасибо за попытку. -Мерджи - person Murgie; 19.01.2014
comment
Итак, использование Unix-sytle пути к вашему выводу решает проблему? то есть "../Test_Ouptut/just....txt"? .Или в неработающем цикле for что будет если вынуть перенаправление на файл, вывод есть? Если НЕТ, то (и я сам делал это много раз), убедитесь, что в вашем задании на dly_UE_qty нет опечатки. Удачи. - person shellter; 19.01.2014
comment
Без этого я получаю вывод. На уровне оболочки я запустил этот код как ›cat inputfiles | gawk -f script.awk › output.txt Пытался сэкономить время моему соавтору в SAS, извлекая только это отдельно. Знание того, как это сделать, было бы удобно для нескольких вещей. Изучил awk, когда у меня был доступ к SUN Sparc/UNIX. Теперь есть только GNU через UNXUTILS под windows. Подозреваю, что это спецификация PATH, которая нуждается в некоторой настройке. Пока не повезло. Лучший, - Мерджи - person Murgie; 19.01.2014
comment
хорошо, вместо того, чтобы использовать относительный путь, проверьте самый простой путь, который вы можете (т.е.) где у вас есть разрешения на запись файла, и попробуйте оба метода /path/2/file VS c:\path\to\file. gawk -f script.awk file >outfile - самое простое использование. нет необходимости в cat, но это не относится к вашей текущей проблеме. Это действительно поможет, если вы измените свой вопрос выше, чтобы включить всю информацию о вашем текущем состоянии, другие могут сразу обнаружить проблему. Удачи. - person shellter; 19.01.2014