Использование sed как заменить запятую перед определенной строкой

У меня есть файл temp.txt. Здесь захотелось заменить запятую (,) на || между Select и 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'); 

Я использую команду - sed - sed 's /, / || / g' temp.txt - но она заменяет всю запятую в файле. Есть ли простая команда unix, которая позволит мне это сделать? Как это сделать с помощью sed.

0
29.03.2017, 17:31
2 ответа
root@admin:~# cat N | sed 's/\(.\+\)\,\(.\+\)/\1\|\|\2/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'); 
0
28.01.2020, 04:47
sed -e '/^select/,/^from/s/,/||/' temp.txt
2
28.01.2020, 04:47

Теги

Похожие вопросы