Linux

使行到列 n 在最後一行中插入換行符

  • July 31, 2018

我有file.txt

john,
5901,
open

lina,
2401,
open

jody,
5401,
open

我想每最後一行插入一個新行,結果應該是:

john,5901,open
lina,2401,open
jody,5401,open

我嘗試什麼

cat file.txt | tr -d '\n'

但是這樣的結果

john,5901,openlina,2401,openjody,5401,open

在段落模式下使用 awk :

$ awk -vRS= -vOFS= '{$1=$1} 1' file.txt
john,5901,open
lina,2401,open
jody,5401,open

取消設置記錄分隔符RS=會導致 awk 將空行之間的所有內容視為一條記錄,並將換行符添加到空白輸入欄位分隔符的預設列表中。因為您的輸入不包含其他空格,這意味著塊的每一行都成為一個欄位。然後,我們通過將欄位值重新分配給自身來強制重新評估$1=$1記錄,最後用空的輸出欄位分隔符OFS=代替預設的單個空格列印記錄。

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