[英]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.