cygwin awk 输出到 Windows 行分隔符

cygwin awk 输出到 Windows 行分隔符

我可以找到打印 zip 条目列表并转发到 txt 文件的方法。

unzip -l my.zip | awk '{print $4}' > my.txt

当我在 Windows 记事本中打开文件时,my.txt行分隔符被忽略,所有行都呈现在一行中。

如何使这些管道线具有适当的行分隔符?

答案1

每个处理行的输出awk都以换行符 ( ) 终止,\n这是 Unix/Linux 标准。 Windows/DOS 需要回车符后跟换行符来标记行结束 ( \r\n)。 notepad将显示您当前看到的所有 Linux 生成的文件。

awk要解决此问题,请通过命令传递 的输出unix2dos,该命令会为您将ns 转换为s:\r\n

unzip -l my.zip | awk '{print $4}' |unix2dos > my.txt

或者,尝试使用变量告诉在每行末尾awk输出:\r\nORS

unzip -l my.zip | awk -v ORS='\r\n' '{print $4}' > my.txt

要列出没有页眉和页脚的列表:

unzip -l my.zip | awk -v ORS='\r\n' '{print $4}' | tail -n +4 | head -n -2 > my.txt

或者

或者,使用zipinfo -1 <zip file>(数字 1,而不是字母 l)列出没有页眉和页脚的文件。您可能仍然需要通过管道将其通过unix2dos。仅当zipinfo在 CygWin 中可用时才有用。

答案2

我设法将输出文件的行分隔符转换为 dos 样式unix2dos

$ unix2dos my.txt
unix2dos: converting file cdc_1.1.jar.txt to DOS format...

相关内容