Text-Processing
sed 刪除特定行號後的空行
我正在嘗試刪除第 3 行之後的所有空行,直到文件末尾:
cat ${File} 1 2 3 4 5 5 6 7 8 9 sed -e '3,${s~^$~~g}' ${File} 1 2 3 4 5 5 6 7 8 9
觀察:輸出沒有變化。
期望的輸出
1 2 3 4 5 5 6 7 8 9
有什麼建議麼?
嘗試:
sed '4,$ {/^$/d}' infile
從第 4行開始直到文件末尾,刪除空行。
您的命令的問題是您再次用空字元串替換空行
s~^$~~g
(與 相同s~^$~~
)並且您沒有刪除它。注意:由於您使用除預設斜杠以外的其他分隔符
/
,因此要使用此樣式~^$~d
,您需要轉義第一個~
以說明sed
這不是您的正則表達式的一部分:sed -e '4,${ \~^$~d }' infile
請參閱
man sed
“地址”下的相關資訊:\c regexp c 匹配與正則表達式 regexp 匹配的行。c可以是任何字元。
如果您想刪除空行以及僅包含空格(製表符/空格)的行,您可以執行以下操作:
sed '4,${ /^[[:blank:]]*$/d }' infile