【问题标题】:Multiline edit in awkawk 中的多行编辑
【发布时间】:2015-03-07 18:40:41
【问题描述】:
MV: The Garden Murder Case (1936)
-------------------------------------------------------------------------------
MV: The Garden of Allah (1936)
BT: USD 2,200,000 
-------------------------------------------------------------------------------

在上述格式中,我的记录分隔符是 ------

我想删除所有单行记录,因此应该删除第一条记录之上,并保留第二条记录。

很简单,所以我想。

BEGIN {RS="^[-]+$"}
  $0 !~ /^(BT|GR|OW|RT|AD)/ {next}
  1

我还尝试检查包含 2 个行尾字符的记录

BEGIN {RS="^[-]+$"}
  /$.+$/
  1 {next}

都没有用。

【问题讨论】:

    标签: awk multiline


    【解决方案1】:

    您不能在记录分隔符中使用^$,因为它们是基于记录分隔符的记录的开始和结束。

    试试这个

    awk -vRS="\n-+\n" -F"\n" 'NF>1' file
    

    输出

    MV: The Garden of Allah (1936)
    BT: USD 2,200,000 
    

    如果你想保留字段分隔符,那么你可以使用

    awk -vRS="\n-+\n" -F"\n" 'NF>1{printf "%s%s",$0,RT}' file
    

    输入

    MV: The Garden Murder Case (1936)
    -------------------------------------------------------------------------------
    MV: The Garden of Allah (1936)
    BT: USD 2,200,000
    -------------------------------------------------------------------------------
    MV: The Garden Murder Case (1936)
    -------------------------------------------------------------------------------
    MV: The Garden of Allah (1936)
    BT: USD 2,200,000
    -------------------------------------------------------------------------------
    

    输出

    MV: The Garden of Allah (1936)
    BT: USD 2,200,000
    -------------------------------------------------------------------------------
    MV: The Garden of Allah (1936)
    BT: USD 2,200,000
    -------------------------------------------------------------------------------
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-16
      • 1970-01-01
      • 2018-06-10
      • 2015-05-21
      • 1970-01-01
      • 2015-07-14
      相关资源
      最近更新 更多