2014-01-20 5 views
1

преуспели я хотел бы, чтобы удалить \" из PERL скрипт с СЕПГ,выполнить команду, если замена

sed -ne ' 
    #(here some substitutions...) 
    s/print "\(.*[^"]\)"/\1/p; 
' | \ 
sed -e 's/\\"/"/g' 

Можно только заменить \" по " на линиях, где была сделана первая замена? Иными словами, чтобы сделать этот скрипт в одной строке?

Ветвление это не круто, потому что, если не указана предыдущая замена была сделана, то условие считается истинным (но последняя замена не было сделано) ...

Exemple:

#! /usr/bin/perl 
(...) 
while (@someArray) { 
    print "la variable \"$_\" est cool!\n"; 
    syslog ('info|machin', "la variable \"$_\" est cool!"); 
} 

к

"la variable "$_" est cool!\n" 

, но не возможно замещение в

syslog ('info|machin', "la variable \"$_\" est cool!"); 

Если эта линия была выбрана ранее.

+1

Я думаю, что некоторые примерные входные данные с ожидаемым выходом будут очень полезны для тех пользователей, которые хотят вам помочь. – Birei

+0

@MUYBelgium. Можете ли вы предоставить образец ввода и вывода ??? – Jigar

+1

из вашего описания, если вы придерживаетесь 'sed (single sed)', 't' или' T (gnu sed) '- единственный способ пойти. – Kent

ответ

1
sed -ne ' 
# if other substitution are to be made without regarding of s/print.... 
#(here some substitutions...) 

    s/print "\(.*[^"]\)"/\1/; 
    t bs 

# if other substitution are to be made if /print... is NOT found 
#(here some substitutions...) 
    b 

: bs 
# if other substitution are to be made if /print... is found 
#(here some substitutions...) 
    s/\\"/"/g 
    p 
' 

после s//, есть t это означает испытание и Гота метка (bs в данном случае), если верно.

Так вот, заменить, если происходящей, перейдите bs и сделать другую замену, чем напечатать результат, если не верно, то идти до конца (b без этикетки ниже)

(обзор кода из-за различной интерпретации о другая замена)

+0

Ветвь bs берется, даже если произошла предыдущая замена. Не только последние. –

+0

normaly не из-за предыдущего b (от ветви до конца) – NeronLeVelu

+0

Я думаю, что мы должны положить другие замены после теста, а не раньше ... –

Смежные вопросы