【问题标题】:Insert a new column if value of previous column has some matching string如果前一列的值有一些匹配的字符串,则插入一个新列
【发布时间】:2022-01-26 01:22:25
【问题描述】:

我想执行一个简单的 bash 脚本。要求如下:

  • 数据的分隔符为 csv (,)
  • 列不一致
  • 如果前一列数据为“login_success”,我想插入一列“NA”

数据如下:

2022.01.26,00:37:08,login_success,BASIC_LOGIN,abc 2022.01.26,00:37:09,login_failed,User_not_authenticated,BASIC_LOGIN, 2022.01.26,00:37:09,login_success,TOKEN_LOGIN,xyz 2022.01.26,00:37:09,login_success,BASIC_LOGIN,123 2022.01.26,00:37:10,login_success,TOKEN_LOGIN,abc123 2022.01.26,00:37:11,login_success,BASIC_LOGIN,xyz123 2022.01.26,00:37:11,login_success,TOKEN_LOGIN,abc 2022.01.26,00:37:11,login_success,BASIC_LOGIN,xyz 2022.01.26,00:37:11,login_success,TOKEN_LOGIN,123 2022.01.26,00:37:12,login_success,BASIC_LOGIN,pqr 2022.01.26,00:37:13,login_failed,Token_does_not_exist,TOKEN_LOGIN, 2022.01.26,00:37:13,login_success,BASIC_LOGIN,abc123 2022.01.26,00:37:14,login_success,TOKEN_LOGIN,xyz123 2022.01.26,00:37:14,login_success,TOKEN_LOGIN,pqr123

期望的输出:

2022.01.26,00:37:08,login_success,NA,BASIC_LOGIN,abc 2022.01.26,00:37:09,login_failed,User_not_authenticated,BASIC_LOGIN, 2022.01.26,00:37:09,login_success,NA,TOKEN_LOGIN,xyz 2022.01.26,00:37:09,login_success,NA,BASIC_LOGIN,123 2022.01.26,00:37:10,login_success,NA,TOKEN_LOGIN,abc123 2022.01.26,00:37:11,login_success,NA,BASIC_LOGIN,xyz123 2022.01.26,00:37:11,login_success,NA,TOKEN_LOGIN,abc 2022.01.26,00:37:11,login_success,NA,BASIC_LOGIN,xyz 2022.01.26,00:37:11,login_success,NA,TOKEN_LOGIN,123 2022.01.26,00:37:12,login_success,NA,BASIC_LOGIN,pqr 2022.01.26,00:37:13,login_failed,Token_does_not_exist,TOKEN_LOGIN, 2022.01.26,00:37:13,login_success,NA,BASIC_LOGIN,abc123 2022.01.26,00:37:14,login_success,NA,TOKEN_LOGIN,xyz123 2022.01.26,00:37:14,login_success,NA,TOKEN_LOGIN,pqr123

【问题讨论】:

    标签: linux bash


    【解决方案1】:

    类似的东西

    sed 's/\(,login_success\),/\1,NA,/g' file.csv
    

    【讨论】:

    • 是的,sed 是适合这项工作的工具。 awk 只是在这里插入附加字段有点混乱。值得一提的是 -i 选项来就地编辑,但这很容易查到。
    • 完美!多谢你们。这解决了我的问题。在这里,我想我需要一个脚本来做到这一点!赞一个!
    猜你喜欢
    • 2015-12-02
    • 2016-11-22
    • 1970-01-01
    • 1970-01-01
    • 2016-06-10
    • 2022-11-23
    • 1970-01-01
    • 1970-01-01
    • 2016-02-29
    相关资源
    最近更新 更多