2015-12-16 3 views
0

У меня есть файл ввода, который имеет две записи, и каждая запись ограничена трубой.Обновление одного столбца в файле на основе некоторого условия

входной файл: /omega/inputfiles/feeds.txt

SALES|2015-12-14 
PROFILES|2015-11-27 

сценария оболочки, я передам динамическую дату в «формате YYYY-MM-DD», если это динамическая дата не равна. to date значение в файле feeds.txt, тогда мне нужно заменить это значение даты в файле feeds.txt с динамической датой.

Скажем, если я передаю динамическую дату как '2015-12-14', то этот файл необходимо обновить, как показано ниже

SALES|2015-12-14 
PROFILES|2015-12-14 

Я написал ниже сценарий, но я не знаю, как заменить поле записи в файле на основе состояния

replacing_dt=$1 

RAW_DIR_PATH=/omega/inputfiles/ 

      while read feed_line ; do    

       raw_dir_latest_upt_dt=`echo $feed_line | cut -d '|' -f 2` 

         if [ $raw_dir_latest_upt_dt != $replacing_dt] 

          then 

          #Code to replace the date available in file with replacing_dt 


         fi 

      done < $RAW_DIR_PATH/feeds.txt 

я выполнить этот файл как Баш /omega/code/file_update.sh 2015 -12-14

Может кто-нибудь мне помочь в настройке этого кода, чтобы удовлетворить мое требование

+0

есть ли ошибка в вашем примере? 24-й вместо 14-го? –

+0

Я не уверен, полностью ли я понимаю, что вам нужно делать, но учитывая тот факт, что вы хотите, чтобы второй столбец был датой, предоставленной вами в качестве аргумента, нет необходимости делать чек. Просто прочитайте файл с помощью 'awk', напечатайте первый столбец, затем напечатайте аргумент даты. –

+0

Да, это была ошибка, я редактировал вопрос –

ответ

0

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

replacing_dt=$1 

RAW_DIR_PATH=/omega/inputfiles/ 
awk -v dt="$replacing_dt" -F '|' '{print $1 FS dt}' "$RAW_DIR_PATH/feeds.txt" 
Смежные вопросы