簡體   English   中英

awk輸出在bash中不起作用

[英]awk output not working inside 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

有人可以幫我嗎? 非常感謝!

問題似乎在這里:

DATE="2016_$m_$d"

由於_被認為是變量名的一部分,因此有效地使其成為:

DATE="2016_${m_}${d}"

由於您沒有名為$m_的變量,因此有效地將在DATE變量中獲取"2016_$d"的值。

您可以使用以下方法修復它:

DATE="2016_${m}_${d}"

還建議您在shellcheck.net上檢查腳本,以查找並修復其他明顯的錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM