答案1
不熟悉YFM
( YAML front matter
) 但根据此页面它必须是文件中的第一个内容,并且必须采用三虚线之间设置的有效 YAML 的形式。这意味着您的文件将始终以---
if YFM
is present 开头,因此您可以运行:
sed -n '1{/^---$/!q};1,/^---$/{/^Title: \|^Place: /d};p' infile
即如果第一行与 uit 不匹配---
q
,否则d
删除与这些模式匹配的所有行(如果它们出现在1
st 行和下一行匹配之间)---
如果第二个标记...
只是更改第二个sed
表达式,但请注意要匹配文字点,您'必须转义它,例如以匹配...
您将使用\.\.\.
或\.\{3\}
):
sed -n '1{/^---$/!q};1,/^\.\.\.$/{/^Title: \|^Place: /d};p' infile
答案2
除了 heemayl 的 sed 解决方案之外,还有一个 grep 选项:
grep -Ev '^Title:|^Place:' file.txt
解释:
- grep -v 忽略包含 Title: 或 Place: 的行
- grep -E 堆叠两个术语
- ^ 表示模式应位于行的开头