我認爲可能有更好的方法來做到這一點,但我唯一想到的就是使用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