我測試過在終端下面一行,它完美的作品:AWK輸出不中使用bash
zcat file_2016_01_01.gz | awk 'BEGIN { FS= "|"}; {if ($1 =="START" && $7 == "1234") {flag=1}} flag ; {if ($1=="STOP"){flag=0}}'> exit.txt
但是當我嘗試在bash腳本的幾個文件中提取自動輸出文件是空的:
更新的代碼:for循環中的評論顯示,這是沒有問題的
#!/bin/bash
REF="ref"
CODE="code"
REP="path_to_file"
#for m in 0{1..3}
#do
# for d in 0{1..9} {10..31};
# do
# DATE="2016_${m}_${d}"
DATE="2016_01_04"
EXIT=${REF}_${CODE}_${DATE}.gz
if [ -e $REP/file_$DATE.gz ]
then
zcat $REP/file_$DATE.gz | awk 'BEGIN { FS= "|"}; {if ($1 =="START" && $7 == "'"$CODE"'" && $18== "'"$REF"'") {flag=1}} flag ; {if ($1=="STOP"){flag=0}} ' > $EXIT
else
echo "File not found!"
fi
# done
#done
exit 0
可能有人幫助我嗎?非常感謝!
http://www.shellcheck.net/自動找到您的直接錯誤和其他幾個錯誤。讓人們參與未來之前,考慮通過它運行代碼。 –
我看到了拼寫檢查器的評論,並且代碼中沒有任何實際問題,但是我更新了代碼,並使用了「傳遞」拼寫檢查器的版本。 – nanicpc
你的代碼仍然是錯誤的,因爲它們關閉了一些警告,當可能觸發錯誤的值被賦予不作爲常量時。這是我有點不同意@koalaman(其維護者)的地方。 '[-e「$ REP/file_ $ DATE.gz」]需要引用; 'zcat'$ REP/file_ $ DATE.gz「'同樣需要引號。 –