将标头写入 ls 输出文件

将标头写入 ls 输出文件

我正在使用以下gsutil命令下载空文件列表。我想在"filename"写入输出之前写入标题。

gsutil ls -l "gs://test-data-prod-ingest/cm_data/AN/CM/*/a01_*_20210128*.csv.bz2" | awk '{if ($1 <= 100) print $3}' > ls_output.csv

输出应该是这样的

filename
somefile1
somefile2
---
---

答案1

尝试:

...| awk '!hdr{ print "something as header"; hdr=1; }; $1 <= 100{ print $3; }'

这样做的优点是,仅当 awk 从其 stdin 读取内容时才打印标题行,而如果我们在BEGIN{...}块内写入标题行,即使没有从输入读取数据,也会打印标题行。

或者甚至更好的是仅当至少有一条记录符合要打印的条件时才打印标题:

...| awk '$1<=100 { if (!hdr) { print "something as header"; hdr=1; }; print $3; } '

相关内容