Um sed
simples será o seguinte:
$ sed 's/","/","\x27/' afile
"col1","'col2","col3","col4","col5"
"value11","'value12","value13","value14","value15"
"value21","'value22","value23","value24","value25"
"value31","'value32","value33","value34","value35"
Detalhes
Estamos pesquisando a primeira ocorrência de ","
e substituindo-a por ","'
. No entanto, escapar do backtick pode ser complicado. Então, basta colocar seu código de escape hexadecimal equivalente, \x27
.
Seu problema
Isso pode ser adaptado dessa forma para limitar as alterações apenas às linhas desejadas.
$ cat <(head -n +1 afile) <(tail -n +2 afile | sed 's/","/","\x27/')
"col1","col2","col3","col4","col5"
"value11","'value12","value13","value14","value15"
"value21","'value22","value23","value24","value25"
"value31","'value32","value33","value34","value35"
Ou você pode pular a primeira linha completamente, usando sed
se souber o truque 8 -):
$ sed '2,$s/","/","\x27/' afile
"col1","col2","col3","col4","col5"
"value11","'value12","value13","value14","value15"
"value21","'value22","value23","value24","value25"
"value31","'value32","value33","value34","value35"
Isso diz sed
para levar apenas a segunda linha até a última linha ( $
) e executá-las pela pesquisa e substituição.