我认为可能有更好的方法来做到这一点,但我唯一想到的就是使用AWK。在AWK中使用和操作日期变量
我有名字约定文件中像下面:
testfile_2016_03_01.txt
使用一个命令我想以一天来接班testfile_20160229.txt
我从开始使用:
file=testfile_2016_03_01.txt
IFS="_"
arr=($file)
datepart=$(echo ${arr[1]}-${arr[2]}-${arr[3]} | sed 's/.txt//')
date -d "$datepart - 1 days" +%Y%m%d
上述工作正常,但我真的想在AWK中做到这一点。我发现的唯一的东西是如何使用AWK内的“日期”
new_name=$(echo ${file##.*} | awk -F'_' ' {
"date '+%Y%m%d'" | getline date;
print date
}')
echo $new_name
没关系,所以两件事情发生在这里。出于某种原因,$4
还含有.txt
即使我删除它(?)
和主要的问题是我不知道如何将变量传递给该日期,下面不工作
`awk -F'_' '{"date '-d "2016-01-01"' '+%Y%m%d'" | getline date; print date}')
最好我想2016-01-01
是从文件名$2-$3-$4
和。减去1天未来变数,但是我想我在这里得到了太多的单,双引号和我的大脑失去..
从最终删除:'$'而不是'{文件%%。*} ##'(或者只是一个''',因为反正只有一个'.')。 –
你有没有或可以获得GNU awk? –
感谢BenjaminW,它的工作原理(虽然我不知道为什么##没有,我确实有不同的脚本)。 @EdMorton我有gawk yes – Moseleyi