Awk

cygwin awk 輸出到 Windows 行分隔符

  • August 9, 2014

我可以找到列印 zip 條目列表並轉發到 txt 文件的方法。

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

當我my.txt在 Windows 的記事本中打開文件時,行分隔符被忽略,所有行都呈現在一行中。

如何使這些管道線具有適當的行分隔符?

每個awk已處理行的輸出都以換行符 ( \n) 結束,這是 Unix/Linux 標準。Windows/DOS 期望輸入後跟換行符來標記行尾 ( \r\n)。 notepad將顯示您目前看到的所有 Linux 生成的文件。

awk要解決此問題,請通過命令將 s 的輸出通過管道傳輸unix2dos,該命令將為您將ns 轉換為\r\ns:

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

或者,嘗試使用變數在每行末尾awk輸出:\r\n``ORS

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。只有在 CygWin 中可用時才有用zipinfo

引用自:https://unix.stackexchange.com/questions/149381