根据某些条件更新文件中的单个列

时间:2015-12-16 06:29:24

标签: linux bash

我有一个包含两条记录的输入文件,每条记录都是以管道分隔的。

输入文件:/omega/inputfiles/feeds.txt

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

对于shell脚本,我将在' YYYY-mm-dd"中传递动态日期。格式。如果该动态日期不等于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

我执行此文件为bash /omega/code/file_update.sh 2015-12-14

有人可以帮助我调整此代码以满足我的要求

1 个答案:

答案 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"