從 CSH 腳本的檔案名稱中提取日期?

從 CSH 腳本的檔案名稱中提取日期?

我正在嘗試編寫一個 CSH 腳本,該腳本將查看文件名的組成部分以產生日期/時間。問題是,我不知道如何提取檔案名稱的一部分來使用它。這是一個範例檔名:

nam_218_20140126_1800_001.grb  

20140126是檔案名稱的日期部分,1800是時間。我需要提取它並將其轉換2014-01-26_18:00:00為在環境變數中使用。有什麼提示嗎?

謝謝

答案1

% set filename='nam_218_20140126_1800_001.grb' 
% set datetime=`echo "$filename" | sed -r 's/.*_([0-9]{4})([0-9]{2})([0-9]{2})_([0-9]{2})([0-9]{2}).*/\1-\2-\3_\4:\5:00/'`
% echo $datetime
2014-01-26_18:00:00

答案2

使用echocut。閱讀man cut,並執行以下操作:

$ csh
aardvark:~% set zz="nam_218_20140126_1800_001.grb"
aardvark:~% set y=`echo $zz|cut -c9-12`
aardvark:~% echo $y
2014
aardvark:~% set m=`echo $zz| cut -c13-14`
aardvark:~% echo $m
01
aardvark:~% set d=`echo $zz| cut -c15-16`
aardvark:~% echo $d
26
aardvark:~% set H=`echo $zz | cut -c18-19`
aardvark:~% echo $H
18
aardvark:~% set M=`echo $zz | cut -c20-21`
aardvark:~% echo $M
00
aardvark:~% echo "$y-$m-${d}_${H}:${M}:00"
2014-01-26_18:00:00  

不是csh具體的答案。

相關內容