Shell 如果匹配,如何查找字符串(前后的一些行)

Shell 如果匹配,如何查找字符串(前后的一些行),shell,Shell,如果我想搜索芬兰语,那么我想我的输出将是这样的 Raamatun tutkisteluja IV, mennessä Charles T. Russell 56898 [Subtitle: Harmagedonin taistelu] [Language: Finnish] 如何找到字符串的块 但我的文件内容是: TITLE and AUTHOR E

如果我想搜索芬兰语,那么我想我的输出将是这样的

Raamatun tutkisteluja IV, mennessä Charles T. Russell                    56898
 [Subtitle: Harmagedonin taistelu]
 [Language: Finnish]
如何找到字符串的块

但我的文件内容是:

TITLE and AUTHOR                                                     ETEXT NO.

Aspects of plant life; with special reference to the British flora,      56900
 by Robert Lloyd Praeger

The Vicar of Morwenstow, by Sabine Baring-Gould                          56899
 [Subtitle: Being a Life of Robert Stephen Hawker, M.A.]

Raamatun tutkisteluja IV, mennessä Charles T. Russell                    56898
 [Subtitle: Harmagedonin taistelu]
 [Language: Finnish]

Raamatun tutkisteluja III, mennessä Charles T. Russell                   56897
 [Subtitle: Tulkoon valtakuntasi]
 [Language: Finnish]

grep-A number_of_line_after-B number_of_line_after finish file

关于“before and after”,您能更准确地描述一下吗?假设您有一个基于Linux的系统,您是否需要上面的“[语言:芬兰语]”行。您的文本文件似乎包含一组记录,这些记录通过空行相互分隔。您可以通过使用记录分隔符RS空字符串的awk轻松搜索此类文件。这将创建命令awk-vrs=-vrs=\n\n'/Finnish/'file.txt。关于awk的更多信息,在我的文件中,有所有的图书信息商店。所以,当我使用作者姓名搜索时,我需要该作者的所有图书信息,如书名、作者和文本号。例如,如果我按芬兰语搜索,则输出将如下。Raamatun tutkisteluja IV,mennessäCharles T.Russell 56898[副标题:Harmagedonin Taistellu][语言:芬兰语]在我的文件中,所有图书信息用新行分隔