我很喜歡正則表達式,剛開始學習使用awk。我試圖做到的是寫一個KSH腳本來讀取時間從文本行,並符合下列條件的每行:如何在awk中使用正則表達式來匹配ASTERISK
* RECORD 0000001 [some_serial_#]
來替換$ 2(即000001 )用不同的數字。所以本質上腳本讀取批處理記錄轉儲,並用date + record#替換記錄號,並寫入單獨的文件。
所以這就是我所想的格式應該是:
awk 'match($0,"/*RECORD")!=0{$2="$DATE-n++"; print $0} match($0,"/*RECORD")==0{print $0}' $BATCH > $OUTPUT
但顯然「/ * RECORD」是行不通的,我不知道,如果更改$ 2,然後寫全線是做到這一點的正確方法。所以我需要一些認真的啓發。
「FTR」從哪裏來?字面上你想要「$ DATE」還是要替換日期?是「n ++」字面量還是你想增加一個變量? – 2010-04-29 15:43:52
對不起。我現在編輯了原文。該代碼原本是用於另一個腳本,我忘記更改VAR。 $ DATE是一個我將在腳本中定義的變量,而n ++只是增量變量var,從我在前面定義的腳本開始,在此處省略。 – 2010-04-29 17:14:25