Shell

沒有點/副檔名的模式的 grep 文件,如果為空,則刪除下一行

  • October 5, 2018

我有一個包含如下數據的文件: https ://pastebin.com/TXrmVpwF 我想要實現的是查找並刪除所有具有模式但名稱中沒有副檔名或點的行,如果為真,則刪除空行:

圖案:

# /x/123

# /x/test

# /x/test_backup

# /x/123/10

假設文件是一個 Unix 文本文件(而不是 DOS 文本文件,在這種情況下你應該dos2unix先執行它):

sed '/^#/{ /\./!{ N; /\n$/d; }; }' <file

註釋sed腳本:

/^#/{           # The current line starts with a "#"
   /\./!{      # The current line does not contain a dot
       N;      # Append next line with a \n in-between
       /\n$/d; # The line just appended was empty, delete, start next cycle
   }
}
               # (implicit print)

如果目錄名稱中允許點,但最後一個路徑名組件中不允許點(即# /x.x/text,如果後跟空行則應刪除),則更/\./改為/\.[^/]*$/.

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