在文本文件中,如何在 Unix 上使用 sed 分隔由特定文本模式边框的文本的多个部分?

在文本文件中,如何在 Unix 上使用 sed 分隔由特定文本模式边框的文本的多个部分?

我用来sed -n START_LINE,FINISH_LINEp filename > newfile 从文本文件中提取指定范围的文本,例如sed -n 45,50p datafile > newfile.

如何使用它来提取始终由相同文本模式边框的多个文本部分?例如,我想要提取的文本始终从 39 行开始,Subject:?????并在 之前立即结束Start Date: ??/??/??

答案1

虽然这本身并不能回答您的问题,但awk有一个优雅的解决方案。

$ awk '

    # Set start variable
    /Subject/ { start=NR + 39; }

    # Disable print condition below
    /Start Date/ { start=""; next; }

    # Print while line is greater than start
    NR > start && start

' someFile.txt

相关内容