需要在下一行之前添加空白或换行,如果下一行以空白开头,则必须忽略。
我的输入文件如下
#qwert TRWQQA 01 40 /* this is the sample test */
/* STILL COMING UP... AFTER UP ENQ GOES AWAY */
/* FEB AND 30TH */
#TFCDF DWERTY 01 40 (FEB AND 30TH)
/* AND (qwert-01 01 #qwert OR */
/* (START SCD RTGFG))
XDYGH #qwert */
#HYUOIK YUPOIH 01 40 FEB AND 30TH
/* AND (qwert-01 01 #qwert OR */
/* (START SCD qwert))
SDFGH #qwert */
#NHUYUOI GHTYHD 01 40 (FEB AND 30TH) AND (qwert-01 01 #qwert OR
(START SCD SDFRE))
#KJYY ERTYUB 01 40 (FEB AND 30TH) AND (qwert-01 03 #qwert OR
(START SCD DERF))
RTYUH POMHY 01 40 ERTYUJ RTYUJ
QWERG PIJHGV 01 40 MNBV LKJH
预期产出。
#qwert TRWQQA 01 40 /* this is the sample test */
/* STILL COMING UP... AFTER UP ENQ GOES AWAY */
/* FEB AND 30TH */
#TFCDF DWERTY 01 40 (FEB AND 30TH)
/* AND (qwert-01 01 #qwert OR */
/* (START SCD RTGFG))
XDYGH #qwert */
#HYUOIK YUPOIH 01 40 FEB AND 30TH
/* AND (qwert-01 01 #qwert OR */
/* (START SCD qwert))
SDFGH #qwert */
#NHUYUOI GHTYHD 01 40 (FEB AND 30TH) AND (qwert-01 01 #qwert OR
(START SCD SDFRE))
#KJYY ERTYUB 01 40 (FEB AND 30TH) AND (qwert-01 03 #qwert OR
(START SCD DERF))
RTYUH POMHY 01 40 ERTYUJ RTYUJ
QWERG PIJHGV 01 40 MNBV LKJH **strong text**
发布于 2023-01-11 00:22:36
使用awk
在不以空白开头的每一行之前添加一行(但避免对第一行这样做):
awk 'NR != 1 && /^[^[:blank:]]/ { print "" }; 1' file
该命令使用两个测试。如果两个测试都为真,则插入空行。
NR != 1
测试为真。这确保了如果第一行以非空白开始,我们不会在输出的开头添加空行。/^[^[:blank:]]/
测试为真。在这里,“空白字符”是指空格或制表符,可能包含额外的空白字符,这取决于您的区域设置。尾随1
导致无条件地输出当前行(这是{ print }
的缩写)。
发布于 2023-01-11 00:17:06
像这样,使用GNU awk
:
$ awk 'NR > 1 && /^\S/{print ""}1' file
NR > 1
从第一行开始,以避免第一行换行符&&
和/^\S/
print ""
将打印换行符。1
在真条件下print
的缩写#qwert TRWQQA 01 40 /* this is the sample test */
/* STILL COMING UP... AFTER UP ENQ GOES AWAY */
/* FEB AND 30TH */
#TFCDF DWERTY 01 40 (FEB AND 30TH)
/* AND (qwert-01 01 #qwert OR */
/* (START SCD RTGFG))
XDYGH #qwert */
#HYUOIK YUPOIH 01 40 FEB AND 30TH
/* AND (qwert-01 01 #qwert OR */
/* (START SCD qwert))
SDFGH #qwert */
#NHUYUOI GHTYHD 01 40 (FEB AND 30TH) AND (qwert-01 01 #qwert OR
(START SCD SDFRE))
#KJYY ERTYUB 01 40 (FEB AND 30TH) AND (qwert-01 03 #qwert OR
(START SCD DERF))
RTYUH POMHY 01 40 ERTYUJ RTYUJ
QWERG PIJHGV 01 40 MNBV LKJH
https://unix.stackexchange.com/questions/731342
复制