如何在AWK命令中添加文件名作为第一行

时间:2017-06-06 09:18:21

标签: bash shell awk

我尝试使用paste和awk从一个文件中的多个文件中获取第九列,这可以使用此代码:

paste <(awk '{FS="\t"}{OFS="\t"}{ a[FNR] = (a[FNR] ? a[FNR] FS : "") $9 } END { for(i=1;i<=FNR;i++) print a[i] }' $(ls -1v */groups.txt))>file.txt

现在我希望第一行成为每个文件的父目录 怎么可以这样做?

我试过了:

paste <(awk '{FS="\t"}{OFS="\t"}}BEGIN{var=$FILENAME; split (var,b,/\//); print b[3]}{ a[FNR] = (a[FNR] ? a[FNR] FS : "") $9 } END { for(i=1;i<=FNR;i++) print a[i] }' $(ls -1v */groups.txt))>file.txt

但它在文件的开头打印一个空行

1 个答案:

答案 0 :(得分:0)

因此,如果您只想要每个文件的父目录,您可以使用以下内容:

for file in */groups.txt; do echo ${file%%/*} ; done