gpt4 book ai didi

regex - 使用 sed 时的多个条件

转载 作者:行者123 更新时间:2023-12-04 14:37:10 27 4
gpt4 key购买 nike

我想问一下在使用sed时是否可以检查多个条件。
基本上我有一个文本文件,可以包含如下字符串:

a 0000 0000 AA00 0000
a 000000000 AA00 0000
a 0000 0000 BB00 0000
a 0000 0000 CC00 0000
b 0000 0000 AA00 0000
b 0000X0000 BB00 0000
  • 如果第 12-13 列包含“AA|CC”且第 6 列为空,则将“Z”添加到
    第 6 列。
  • 如果第 12-13 列包含 'BB' 且第 6 列为空,则添加
    'ZZ' 到第 6 列。
  • 这仅适用于以“a”开头的行。

  • 因此,输出应该是:
    a 0000Z0000 AA00 0000
    a 000000000 AA00 0000
    a 0000ZZ0000 BB00 0000
    a 0000Z0000 CC00 0000
    b 0000 0000 AA00 0000
    b 0000X0000 BB00 0000
    到目前为止,我想出了以下内容。
    sed -E '/^a(.{12})A|C/s/^(.{6})[\t ]/\1ZZ/g'
    我想我最终可以单独执行此操作,但是我无法确定在一个类轮中是否可行,并且我无法弄清楚如何对双字符使用多个条件。
    如果可能,任何帮助将不胜感激。

    最佳答案

    您能否尝试在 GNU awk 中使用所示示例进行以下、编写和测试? .

    awk '
    {
    check=substr($0,13,2)
    }
    /^a/ && (check=="AA" || check=="CC"){
    print substr($0,1,6) "Z" substr($0,8)
    next
    }
    /^a/ && check=="BB"{
    print substr($0,1,5) "ZZ" substr($0,8)
    next
    }
    1
    ' Input_file
    说明:为上述添加详细说明。
    awk '                                               ##Starting awk program from here.
    {
    check=substr($0,13,2) ##Creating variable check which contains 13t and 14th character of current line.
    }
    /^a/ && (check=="AA" || check=="CC"){ ##Checking condition if a line starts from a and check is either equals to AA OR CC then do following.
    print substr($0,1,6) "Z" substr($0,8) ##Printing sub-string from 1 to 6 characters then Z then rest of the line here.
    next ##next will skip all further statements from here.
    }
    /^a/ && check=="BB"{ ##Checking condition if line starts from a AND check is equal to BB then do following.
    print substr($0,1,5) "ZZ" substr($0,8) ##Printing sub-string from 1 to 5 characters ZZ and rest of line here.
    next ##next will skip all further statements from here.
    }
    1 ##1 will print current line here.
    ' Input_file ##Mentioning Input_file name here.

    关于regex - 使用 sed 时的多个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63313744/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com