awk -F, -vOFS=, '$2 ~ /\.app$/ { for (i = NF + 1; i > 2; --i) $i = $(i-1); $2 = "INVALID" } 1' file >newfile
Isso criaria newfile
de file
. O comando awk
define o delimitador de campo de entrada e saída como uma vírgula e, em seguida, testa o valor da coluna dois em relação a uma expressão regular que corresponde à sequência .app
no final do valor. Se o teste for bem-sucedido, os campos do registro serão deslocados para um passo para criar a string INVALID
como o novo segundo campo.
O 1
à direita pode ser substituído por { print }
(faz com que todas as linhas sejam exibidas).
Com os dados de exemplo fornecidos, o arquivo de saída conteria
DOM,PROJ,APP,USER,DATE,TIME,STATUS
www,test,biz.app,bob,6-1-18,09:33,OK
www,INVALID,biz.app,tony,7-11-17,06:22,ok