2014-01-02 4 views
4

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

DateTime=`date "+%m/%d/%Y"` 

Plc_hldr1=`head -$i place_holder.txt | tail -1 | awk -F ' ' '{ print $1 }'` 
Plc_hldr2=`head -$i place_holder.txt | tail -1 | awk -F ' ' '{ print $2 }'` 

sed "s/$Plc_hldr1/$DateTime/;s/$Plc_hldr2/$Total/" html_format.htm >> /u/raskar/test/html_final.htm 

При запуске команды sed я получаю следующую ошибку.

sed: 0602-404 Function s/%%DDMS1RT%%/01/02/2014/;s/%%DDMS1C%%/1235/ cannot be parsed. 

Я полагаю, что это происходит, как дата содержит следующий вывод, который включает в себя слэш «/»

01/02/2014 

Я попытался с различными кавычками даты. Как заставить его работать?

ответ

4

Изменить разделитель на что-то другое, что не будут появляться в вашей модели, например:

sed "s?$Plc_hldr1?$DateTime?;s?$Plc_hldr2?$Total?" 
+0

спасибо! это сработало. Я не знал, что могу использовать любой другой разделитель :) .. Thnks много – user3055262

0

Не прямое quertion но заменить

Plc_hldr1=`head -$i place_holder.txt | tail -1 | awk -F ' ' '{ print $1 }'` 
Plc_hldr2=`head -$i place_holder.txt | tail -1 | awk -F ' ' '{ print $2 }'` 

по

Plc_hldr1=`sed -n "$i {s/ .*//p;q}"` 
Plc_hldr2=`sed -n "$i {s/[^ ]\{1,\} \{1,\}\([^ ]\{1,\}\) .*/\1/p;q}"` 

и с aix/ksh

sed -n "$i {s/\([^ ]\{1,\} \{1,\}[^ ]\{1,\}\) .*/\1/p;q}" | read Plc_hldr1 Plc_hldr2 
Смежные вопросы