簡體   English   中英

通過管道將bash循環變量傳遞到AWK

[英]Pass bash loop variable through pipe to AWK

我有以下bash腳本:

for file in *.gz; do 
    zgrep @ $file | awk '{split($0,a,":");  
    print $file"\t@RID\tT1:"a[1]"\tT2:"a[2]"\tT3:"a[3]}' > out.csv; 
done

我想創建一個輸出csv / tbi文件,其文件名放置在通過awk傳遞給zgrep輸出的第一列中。

錯誤是:

“ awk:非法字段$(),名稱為“文件”,輸入記錄號1,文件
源代碼行2”

我希望得到這個:

列標題:(這些不需要放在實際的輸出文件中,為了清楚起見,我只是將其放在此處,因為我找不到在stackoverflow上如何與制表符分隔的方法):

文件名| RID | T1 | T2 | T3

輸出行:

FILENAME.gz @RID T1:text1 T2:text2 T3:text3

...更多行...

如果我在打印命令中刪除了$ file,它將起作用(不必說忽略了文件名)。 我已經在awk呼叫內外嘗試了以下選項,但無濟於事:

-v i=$file 

任何建議或解決方法,將不勝感激。

for file in *.gz; do 
    zgrep @ "$file" |
    awk -F':' -v OFS='\t' -v file="$file" '{
        print file, "@RID", "T1:" $1, "T2:" $2, "T3:" $3
    }' 
done > out.csv

暫無
暫無

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

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