Home > Software engineering >  Insert a new column if value of previous column has some matching string
Insert a new column if value of previous column has some matching string

Time:01-27

I want to perform a simple bash script. The requirement is as follows:

  • The data has the delimiter of csv (,)
  • The columns are inconsistent
  • I want to insert a column 'NA' if previous column data is 'login_success'

The data is as follows:

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

Desired output:

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

CodePudding user response:

Something like this

sed 's/\(,login_success\),/\1,NA,/g' file.csv
  •  Tags:  
  • Related