使用AWK在命令输出末尾添加<br>却出现在开头的问题
问题原因与解决办法
你的问题出在输入文件cmd.out的换行格式上——它是Windows系统的CRLF(\r\n)格式,而非Unix/Linux的LF(\n)格式。当AWK读取每行内容时,$0会包含末尾的回车符\r,执行printf $0"<br>\n"时,\r会让终端光标跳回到行首,随后输出的<br>就会覆盖掉行开头的部分字符,导致出现你看到的异常结果。
可以用以下几种方法解决:
转换文件格式:先用
dos2unix工具把文件转为Unix格式,再执行你的AWK命令:dos2unix cmd.out cat cmd.out | awk '{printf $0"<br>\n"}'在AWK中直接处理回车符:修改AWK命令,先移除每行末尾的
\r再输出:awk '{sub(/\r$/,""); printf "%s<br>\n", $0}' cmd.out用
tr过滤回车符:在管道中加入tr命令去掉所有\r:cat cmd.out | tr -d '\r' | awk '{printf $0"<br>\n"}'
内容的提问来源于stack exchange,提问作者user1400953
相关产品推荐
相关产品推荐

