SED 或 AWK 删除第一个破折号之前和最后一个破折号之后的所有内容

SED 或 AWK 删除第一个破折号之前和最后一个破折号之后的所有内容

我有一个私钥文件,里面有一些额外的废话,并且只想要密钥的文本。

所以:

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

应该成为

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

编辑:我不想删除实际的“废话”这个词。它可以是关键文本之前和之后的任何内容。

答案1

怎么样

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-----

答案2

awk '/-----(Begin Key|End Key)-----/{sub(/^[^\-]+|[^\-]+$/, "")}1' data
  • /-----(Begin Key|End Key)-----/查找开始或结束关键行
  • {sub(/^[^\-]+|[^\-]+$/, "")}清晰的开头和结尾的废话。
  • 1总是打印

相关内容