2016-06-01 17 views
-1

[тривиальный] [РЕШИТЬ]AWK/простак кажется перезаписать столбцы на результате

ТЛ: д-р - DOW CRLF будет чувствовать себя, как будто AWK вспылил; тривиальная ошибка!

Не уверен, почему awk/gawk ведет себя таким образом. Любые намеки? Когда-либо видели awk-результаты, перезаписывающие столбцы на терминале? Я вижу это только на одной машине; везде, все работает отлично! Не уверен, что это терминальная ошибка или любая другая вещь. stty sane, похоже, тоже не помогает. Кто-нибудь видел подобную вещь?

$ cat in.txt 
2132088 AAA_WEB_50181_552222195-1 
2110665 AAA_WEB_50177_547796499-2 
2157591 AAA_WEB_50181_551310844-1 
2117370 AAA_WEB_50178_549250104-1 
2109777 AAA_WEB_50180_551512637-1 
2112704 AAA_WEB_50179_410838823-13 
2116984 AAA_WEB_50178_549463801-2 
2119511 AAA_WEB_50179_550076677-2 
2122008 AAA_WEB_50180_551679428-1 
2124984 AAA_WEB_50177_548026293-1 
$ awk '{print $2 " " $1}' in.txt 
213208850181_552222195-1 
211066550177_547796499-2 
215759150181_551310844-1 
211737050178_549250104-1 
210977750180_551512637-1 
211270450179_410838823-13 
211698450178_549463801-2 
211951150179_550076677-2 
212200850180_551679428-1 
212498450177_548026293-1 
$ cat /etc/issue.net 
Ubuntu 14.04.4 LTS 
$ gawk '{print $2 " " $1}' in.txt 
213208850181_552222195-1 
211066550177_547796499-2 
215759150181_551310844-1 
211737050178_549250104-1 
210977750180_551512637-1 
211270450179_410838823-13 
211698450178_549463801-2 
211951150179_550076677-2 
212200850180_551679428-1 
212498450177_548026293-1 
$ gawk -W version 
GNU Awk 4.0.1 
Copyright (C) 1989, 1991-2012 Free Software Foundation. 

Скриншот: awk or terminal - misbehaviour

+3

Терминаторы терминалов DOS? – tripleee

+0

@triplee - да! Выяснил это сейчас! Благодаря! – raghava

ответ

3

Как отметил tripleee, проблема, скорее всего, из-за терминаторов линии DOS, простое исправление может быть раздеться специальные символы с помощью tr и кормить его awk для обработки.

cat in.txt | tr -dc '[:print:]\n' | gawk '{print $2 " " $1}' 

В приведенном выше примере, tr -dc '[:print:]\n' позволяет только печатаемые символы из входного файла перед его подачей в awk.

+0

Точно! Выяснил это также. Разработал dos2ux, а затем зафиксировал его. Должен был увидеть это! : D – raghava

0

Проблема может быть с возвратом каретки (\r), присутствующее в конце строки, если файл приходит от дос-среде.

A gawk только решение будет.

gawk '{printf "%s %s\n",gensub(/\r$/,"",-1,$2),$1}' in.txt 

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

  • Нет связанных вопросов^_^