2014-01-19 1 views
0

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

Выучил awk Мне приходилось проверять замену двойных кавычек для одиночных кавычек в примерах AWK и т. Д., Чтобы заставить их работать под моим gawk. Но ничто не мешало бы сделать линию, прокомментированную ниже, работать. Любые указания, предложения, чтобы попробовать, приветствуем. Благодарю. Лучшее, -Murgie

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» за пределы последней «}» скобки вместо внутренней. Ничего не работает.

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

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

ответ

0

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

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

+0

@shelter Это не продолжение линии. Фактическая строка - целая. Также попробовал расстаться с косой чертой продолжения, как вы показали. Не повезло. Спасибо за попытку. -Murgie – Murgie

+0

Хорошо, так использует ли Unix-sytle путь к вашему выходному решению проблемы? то есть '' ../ Test_Ouptut/just .... txt "'? .Or в цикле 'for', который не работает, что произойдет, если вы перенесите перенаправление в файл, есть ли выход? Если «НЕТ», то (и я делал это сам много раз), убедитесь, что в задании «dly_UE_qty» нет опечатки. Удачи. – shellter

+0

Без этого я получаю вывод. На уровне оболочки я запустил этот код как> cat inputfiles | gawk -f script.awk> output.txt пытался сохранить мой соавтор некоторое время в SAS, извлекая только это отдельно. Знать, как это сделать, было бы полезно для нескольких вещей. Узнал awk, когда у меня был доступ к SUN Sparc/UNIX. Теперь у Windows есть только GNU через UNXUTILS. Подозреваю, что спецификация PATH нуждается в некоторой настройке. Пока не повезло. Best, -Murgie – Murgie