【问题标题】:How do find string if match (some lines before and after) [duplicate]如果匹配,如何查找字符串(之前和之后的一些行)[重复]
【发布时间】:2019-04-11 17:54:15
【问题描述】:

如果我想搜索“芬兰语”,那么我希望我的输出会是这样的

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]

【问题讨论】:

  • 您能更准确地了解“之前和之后”吗?你想要'[Language: Finnish]'上面的那一行
  • 假设您有一个基于 Linux 的系统。看起来您的文本文件包含一组记录,这些记录通过空行相互分隔。您可以使用 awk 轻松搜索此类文件,其中记录分隔符 RS 为空字符串。这将创建命令awk -v RS="" -v ORS="\n\n" '/Finnish/' file.txt。有关 awk 的更多信息,请访问 catonmat.net/blog/awk-bookstackoverflow.com/tags/awk/info

标签: shell


【解决方案1】:

grep -A number_of_lines_after -B number_of_lines_before Finnish file

【讨论】:

  • 在我的文件中,有所有图书信息存储。因此,当我使用作者姓名进行搜索时,我需要该作者的所有书籍信息,例如书名、作者和 textno。例如,如果我按芬兰语搜索,那么输出将在下方。 Raamatun tutkisteluja IV, mennessä Charles T. Russell 56898 [字幕:Harmagedonin taistelu] [语言:芬兰语] 在我的文件中,所有书籍信息都用换行符分隔
猜你喜欢
  • 1970-01-01
  • 2012-02-10
  • 2011-05-17
  • 2020-05-11
  • 2020-08-26
  • 1970-01-01
  • 2016-02-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多