Usando sed como substituir vírgula antes de uma cadeia específica

0

Eu tenho um arquivo temp.txt. Aqui queria substituir vírgula (,) com || entre a palavra-chave Select e From.

select emp_name,
       emp_id,
       loc
from   emp_join ,
       emp_loc
where emp_join.id = emp_loc.id 
and  join_date > to_date('2015-01-01','YYYY-MM-DD')

UNION

select emp_name,
       emp_id,
       loc
from   emp_term,
       emp_loc
where  emp_term.id = emp_loc.id
and   term_date = to_date('2015-01-01','YYYY-MM-DD'); 

Estou usando - comando sed - sed 's/,/||/g' temp.txt - mas substituindo todas as vírgulas no arquivo. Existe um comando unix simples que me permita fazer isso? Como fazer isso usando sed.

    
por Ashish Mri 29.03.2017 / 16:31

2 respostas

0

root@admin:~# cat N | sed 's/\(.\+\)\,\(.\+\)/\|\|/g'
select emp_name,
       emp_id,
       loc
from   emp_join ,
       emp_loc
where emp_join.id = emp_loc.id 
and  join_date > to_date('2015-01-01'||'YYYY-MM-DD')

UNION

select emp_name,
       emp_id,
       loc
from   emp_term,
       emp_loc
where  emp_term.id = emp_loc.id
and   term_date = to_date('2015-01-01'||'YYYY-MM-DD'); 
    
por 29.03.2017 / 16:55
0
sed -e '/^select/,/^from/s/,/||/' temp.txt
    
por 29.03.2017 / 18:07