【问题标题】:How to grep a specific line and their subsequnet line with a specific pattern?如何使用特定模式 grep 特定行及其子序列行?
【发布时间】:2022-07-30 16:13:28
【问题描述】:

我有以下格式的数据。

>ab:xy_a0by98-2 \Movie= top gun \actor= Tom \Genere=Action \Length=234 \Credits=30 \pe=1 \summry=(Tom|action|234)
Top Gun is a 1986 American action drama film directed by Tony Scott, and produced by Don Simpson and Jerry Bruckheimer

>ab:xy_b0ha81-5 \Movie= Thor \actor= chris hemsworth \Genere=Action \Length=321 \Credits=20 \pe=0 \summry=(chris|Action|321)
Thor embarks on a journey unlike anything he's ever faced a quest for inner peace

>ab:xy_c0ma65-1 \Movie= Batman \actor= Bale \Genere=Action \Length=251 \Credits=30 \pe=1 \summry=(Bale|Action|251)
From American Psycho to Batman Begins to Vice, Christian Bale is a bonafide A-list star
But he missed out on plenty of huge roles along the way.

>ab:xy_d0fc78-2 \Movie= Joker \actor= Phoenix \Genere=thriller \Length=341 \Credits=35 \pe=2 \summry=(phoenix|thriller|341)
Joker is a 2019 American psychological thriller film directed and produced by Todd Phillips
who co-wrote the screenplay with Scott Silver

>ab:xy_e0ra81-2 \Movie= Superman \actor= henry cavill \Genere=Action \Length=254 \Credits=28 \pe=1 \summry=(cavill|action|254)
Henry William Dalgliesh Cavill is a British actor
He is known for his portrayal of Charles Brandon in Showtime's The Tudors

我想提取包含 pe=1 的所有条目及其描述(两个 > 之间的数据),每个条目以 > 符号开头,如下所示:

>ab:xy_a0by98-2 \Movie= top gun \actor= Tom \Genere=Action \Length=234 \Credits=30 \pe=1 \summry=(Tom|action|234)
Top Gun is a 1986 American action drama film directed by Tony Scott, and produced by Don Simpson and Jerry Bruckheimer

>ab:xy_c0ma65-1 \Movie= Batman \actor= Bale \Genere=Action \Length=251 \Credits=30 \pe=1 \summry=(Bale|Action|251)
From American Psycho to Batman Begins to Vice, Christian Bale is a bonafide A-list star
But he missed out on plenty of huge roles along the way.

>ab:xy_e0ra81-2 \Movie= Superman \actor= henry cavill \Genere=Action \Length=254 \Credits=28 \pe=1 \summry=(cavill|action|254)
Henry William Dalgliesh Cavill is a British actor
He is known for his portrayal of Charles Brandon in Showtime's The Tudors

我试过grep 'pe=1' input.txt。但它只提取每条记录的第一行。我需要条目的后续行直到下一个 > 符号

【问题讨论】:

  • 请添加您尝试过的代码,就像您在上一个问题中添加的一样,谢谢。它强烈鼓励提问者在他们的问题中添加他们尝试过的代码。
  • 感谢您添加代码。您是否为来访之间的空行而烦恼?请确认一次。
  • 添加了我试过的代码。我是该领域的新手。为错误道歉
  • 空行没问题
  • 你的意思是你不需要它们对吗?

标签: bash ubuntu parsing


【解决方案1】:

使用您展示的示例,请尝试关注awk 代码。

awk -v RS= '/^>.*pe=1/' Input_file

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-05
    • 2021-02-26
    • 1970-01-01
    • 1970-01-01
    • 2016-09-28
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    相关资源
    最近更新 更多