[sed] 在匹配前插入空行


假設在某個目錄下,有許多副檔名為 .rst 的檔案, 若檔案裡某一行開頭為 :adsu ,則在此行前插入空行。

舉例來說,假設檔案內容如下:

hello
world
:adsu
你好
世界

經過 sed 處理後,變成如下:

hello
world

:adsu
你好
世界

利用 Bash script以及 sed 來達成此任務:

#!/bin/bash

rstdir=content/articles/

for path in $(find $rstdir -type f -name "*.rst")
do
  sed -i '0,/:adsu/s/:adsu/\n&/' $path
done

References:

[1]linux - Command to insert lines before first match - Stack Overflow
[2][Bash] Find Redundant Files Saved by Chrome