【问题标题】:GREP or AWK complex pattern match (linux)GREP 或 AWK 复杂模式匹配 (linux)
【发布时间】:2023-03-17 05:37:01
【问题描述】:

所以我有来自“mediinfo VIDEO.mkv”的文本输出:

General
Unique ID                                : 190778803810831492312123193779943 (0x8F265C1B107A4D595F723237C370C7074FB7)
Complete name                            : VIDEO.mkv
Format                                   : Matroska
Format version                           : Version 4 / Version 2

Video
ID                                       : 1
Format                                   : HEVC
Format/Info                              : High Efficiency Video Coding
Format profile                           : Main@L3@Main
Codec ID                                 : V_MPEGH/ISO/HEVC

我需要 GREP 或 AWK 格式:HEVC 波纹管视频。我不知道如何继续,因为我可以正则表达式“格式”,但后来我得到了多行(Matroska 和 HEVC)。我没有找到任何方便的提示。

想法?

【问题讨论】:

标签: linux awk grep mediainfo


【解决方案1】:
  • 如果“Matroska”已修复,您可以通过 mediinfo VIDEO.mkv | 进行修复grep "格式" test.fi | grep -v "Matroska"
  • 如果输出格式是固定的,那么你可以通过 mediinfo VIDEO.mkv | grep "格式" test.fi |尾 -n1

grep -v 将忽略匹配的行,tail 将从最后一行开始打印指定的 o 行。

【讨论】:

    【解决方案2】:
    mediinfo VIDEO.mkv | awk -v RS= '/^Video/{print $7}' 
    HEVC
    

    您可以使用awk 并将RS 设置为空白并打印所需的列号。

    【讨论】:

      【解决方案3】:

      显然有很多方法可以解决这个问题,但sed 似乎很适合这里:

      $ sed -n '/Video/,$ { s/Format *: //p }' file
      HEVC
      

      【讨论】:

      • { } 的原因是什么?
      • 这里不是以牺牲兼容性为代价的吗?
      • @PesaThe,你是什么意思?花括号也是每个 POSIX 的有效命令组。
      • 我以为不是,我的错。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-07
      • 1970-01-01
      • 1970-01-01
      • 2013-10-09
      • 2014-10-20
      • 1970-01-01
      相关资源
      最近更新 更多