2017-01-18 20 views
1

В моей Unix AIX мне нужно заменить дату в файле параметров на системную дату, используя сценарий оболочки, который будет запускать сеанс после сеанса PowerCenter.Заменить дату в файле параметров с системной датой

Я могу использовать SED, чтобы заменить строковую переменную, но запускаясь с использованием даты.

Я попытался использовать запятые вместо косых черт как разделители. Содержимое тестового файла выглядит следующим образом:

$$TESTFIELD=12/29/2016 14:57:51 

СЕПГ команда, которую я чувствовал, должно работать было:

sed -e "s,^\($$TESTFIELD=\).*,\1'date +"%D %T"'," testfile.txt > tmp.$$ 

После чего я бы переместить tmp.$$ к testfile.txt, но результаты бросил следующую ошибку:

sed: 0602-404 Function s,^\(14680298TESTFIELD=\).*,\1'date +%D cannot be parsed. 
+0

Обратите внимание, что вы используете двойные кавычки, поэтому 'sed -e" s ... "' расширяет '$$ TESTFIELD' до его значения. – fedorqui

+0

Возможно, вы захотите посмотреть [Как изменить формат даты в sed?] (Http://stackoverflow.com/a/34080390/1983854), чтобы узнать, как выполнить внешнюю команду из 'sed'. В принципе, вам нужно использовать флаг '-e'. – fedorqui

+0

Возможно: 'Now = $ (date +"% D% T "); sed "s, =. * $, = $ Теперь," testfile.txt >> tmp. $$ ' –

ответ

2

Вы должны использовать одиночные кавычки или избежать $ в команде sed. В противном случае оболочка будет расширяться $TESTFIELD. Я рекомендую первый в этом случае:

sed -e 's,^\($$TESTFIELD=\).*,\1'\''date +"%D %T"'\'',' 

Ваш вопрос непонятен. Если вы хотите заменить DateTime в файле текущим DateTime, используйте:

sed -e 's,^\($$TESTFIELD=\).*,\1'"$(date +"%D %T")"',' 
+0

Этот подход не вставляет текущую дату/время, но фактически вставляет dat +"% D% T ": $$ TESTFIELD = 'date + "% D% T"' –

+0

Чтение вашего вопроса, похоже, что вы хотите, чтобы это было – hek2mgl

+0

. Мое обновление – hek2mgl

0
sed -e 's,^\($$TESTFIELD=\).*,\1'"$(date +"%D %T")"',' 

Это работало отлично. Результаты: $$ TESTFIELD = 01/18/17 13:14:59

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

  • Нет связанных вопросов^_^