Text-Processing

awk:處理錯誤位置的換行符分隔

  • February 7, 2022

我有一些看起來像這樣的數據:

abc


123
456
789
def


111
222
333
ghi


999
888
777
666

即記錄由多個換行符分隔但在錯誤的位置。我想要的是這樣得到它:

abc
123
456
789

def
111
222
333

ghi
999
888
777
666

我曾嘗試在 awk 中設置RS\n\n\n但最終導致記錄被錯誤地截斷;該abc術語最終成為前一個記錄的最後一個欄位,而不是目前記錄的第一個欄位。

我也不確定如何使用sed它,因為它是逐行工作的。

嘗試

awk '!NF {next} /[^0-9]/ {printf XRS; XRS = ORS} 1' file2
abc
123
456
789

def
111
222
333

ghi
999
888
777

它刪除空行(我從你的規範中讀到那些真的是空的,沒有空格等),然後檢查是否有任何非數字,指示記錄標題,它列印一個換行符,除了第一個得到一個空字元串。

在每個 Unix 機器上的任何 shell 中使用任何 awk:

$ awk '/[^0-9]/ && NR>1{print ""} NF' file
abc
123
456
789

def
111
222
333

ghi
999
888
777
666

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