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

标签 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 执行

有人可以帮我调整这段代码以满足我的要求

最佳答案

为什么要检查,replace 足以满足您的情况:

replacing_dt=$1

RAW_DIR_PATH=/omega/inputfiles/
awk -v dt="$replacing_dt" -F '|' '{print $1 FS dt}' "$RAW_DIR_PATH/feeds.txt"

关于linux - 根据某些条件更新文件中的单个列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34305303/

相关文章:

linux - 将 JVM 移植到 MINIX

bash - 生成新进程并返回到 Expect 脚本

java - 多个 Tomcat 8 安装或虚拟主机

c++ - Windows 上的 Boost::Asio 不能异步工作

bash - 列出在一周的同一天结束的月份

linux - 为什么在运行 bash 脚本时出现意外的文件结束错误?

Bash 以声明方式定义要循环的列表

linux - 了解标准输入、标准错误、标准输出

Linux Bash 脚本 : Comparison of strings in if with escape characters

python - 使用 Python (sftp) 更改远程 Linux 系统的密码