在bash Shell中查找和替换

时间:2014-08-27 23:57:32

标签: linux bash shell

请告知更换最新日期和变量的变量;时间。

这是我的要求。

FN='basename$0'

TS=`date '+%m/%d/%Y %T'`

QD='08/27/2014 16:25:45'

然后我有一个查询要运行。运行后,我需要$TS(当前系统日期和时间)并将其作为值分配给$QD变量。这是一个循环过程,每次脚本运行时都会更新。

我尝试过使用sed但没有成功。

请帮忙。

3 个答案:

答案 0 :(得分:1)

以编程方式修改脚本以使其具有不同的时间戳是绝对且强调处理此问题的错误方法。

相反,当您想要标记查询已完成时,只需触摸文件:

touch lastQueryCompletion

...当您想知道上次查询的时间时,请检查该文件的时间戳:

# with GNU date
QD=$(date -r lastQueryCompletion '+%m/%d/%Y %T')

# or, with Mac OS X stat
QD=$(stat -t '%Y/%m/%d %H:%M:%S' -f '%Sm' lastQueryCompletion)

答案 1 :(得分:0)

虽然您还没有提到您希望实现的总体目标,但我觉得这样做会比使用sed更新现有脚本文件更强大。

FN='basename$0'

TS=date '+%m/%d/%Y %T'

# Load the latest QD (from the last run)
[ -e ~/.QD.saved ] && QD="`cat ~/.QD.saved`"
QD='08/27/2014 16:25:45'

......后来在那个档案......

#Save the new QD variable
echo '$(date +$FORMAT)'" > ~/.QD.saved

答案 2 :(得分:0)

虽然我不确定sed是否是你正在寻找的工具,但我相信你的命令必须是这样的:

sed -i -r 's/^QD=.*/QD="$TS"/g' "$FN"

我假设您正在使用gnu-sed,其中-i选项告诉您执行就地替换,而不是将输入行复制到模式空间。

嗯,希望它有所帮助。