Shell-Script

SED 或 AWK 刪除第一個破折號之前和最後一個破折號之後的所有內容

  • May 22, 2019

我有一個私鑰文件,裡面有一些額外的廢話,只想要密鑰的文本。

所以:

nonsense -----Begin Key-----
keep this1
keep this2 
keep this3
-----End Key----- nonsense

應該成為

-----Begin Key-----
keep this1
keep this2 
keep this3
-----End Key-----

編輯:我不想只是刪除實際的“廢話”這個詞。在關鍵文本之前和之後,它可能是任何東西。

怎麼樣

sed -e '/Begin Key/ s/^[^-]*//' -e '/End Key/ s/[^-]*$//'

前任。

$ sed -e '/Begin Key/ s/^[^-]*//' -e '/End Key/ s/[^-]*$//' file
-----Begin Key-----
keep this1
keep this2 
keep this3
-----End Key-----
awk '/-----(Begin Key|End Key)-----/{sub(/^[^\-]+|[^\-]+$/, "")}1' data
  • /-----(Begin Key|End Key)-----/查找開始或結束關鍵行
  • {sub(/^[^\-]+|[^\-]+$/, "")}明確領先和落後的廢話。
  • 1總是列印

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