awk/gawk似乎覆盖了结果上的列

rag*_*ava -1 bash terminal awk gawk stty

[TRIVIAL] [求助]

tl:dr - DOW CRLF觉得好像是胡子行为不端; 琐碎的错误!

我不确定为什么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.
Run Code Online (Sandbox Code Playgroud)

截图: awk或终端 - 不当行为

Ini*_*ian 5

正如tripleee指出的那样,问题可能是由于DOS行终止符,一个简单的修复可能是剥离特殊字符使用tr并将其提供给awk进行处理.

cat in.txt | tr -dc '[:print:]\n' |  gawk '{print $2 " " $1}'
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,tr -dc '[:print:]\n'在将其输入之前,仅允许输入文件中的可打印字符awk.