Com GNU sed
, assume que você não tem nenhum meta caractere na lista de strings, +
não é um meta caractere com o padrão BRE
$ # create substitute command for each line
$ sed 's/.*/s|"&"|\L\&|gi/' f1
s|"+stringa +Dog +Cat"|\L&|gi
s|"+cat +Tux +elephant"|\L&|gi
$ # pass those commands as sed script
$ sed -f <(sed 's/.*/s|"&"|\L\&|gi/' f1) ip.csv
"123456 Abc","+Stringx +123","something"
"23456 dEf","+cat +tux +elephant","Other something"
"34524 xyz","+stringa +dog +cat","third something"
$ # or save them in a file and use
$ sed 's/.*/s|"&"|\L\&|gi/' f1 > f2
$ sed -f f2 ip.csv
-
\L
para converter uma string em minúscula -
g
para substituir todas as ocorrências em uma linha,i
para correspondência sem distinção entre maiúsculas e minúsculas
Se você não tem GNU sed
$ # \Q to quote metacharacters
$ # but will have issues if you have \ or $ or @
$ sed 's/.*/s|\Q"&"|\L$\&|gi;/' f1
s|\Q"+stringa +Dog +Cat"|\L$&|gi;
s|\Q"+cat +Tux +elephant"|\L$&|gi;
$ perl -p <(sed 's/.*/s|\Q"&"|\L$\&|gi;/' f1) ip.csv
"123456 Abc","+Stringx +123","something"
"23456 dEf","+cat +tux +elephant","Other something"
"34524 xyz","+stringa +dog +cat","third something"
Como observado por Stéphane Chazelas, isso pode levar a vulnerabilidades de injeção de código se o conteúdo de f1
não estiver sob controle