【问题标题】:To Print GunZip File Name with Output:打印带有输出的 GunZip 文件名:
【发布时间】:2014-11-19 01:43:37
【问题描述】:

想打印文件名和位于目录(pwd)中的文件,都是*.gz扩展文件。 例如 Master.csv.gz 位于 /cygdrive/e/Test/Master.csv.gz 和 输入文件位于不同的子目录中,例如/cygdrive/f/Jan/Input_Jan.csv.gz & /cygdrive/f/Feb/Input_Feb.csv.gz 等等..

以下命令在没有文件名目录的情况下工作正常:

awk ' BEGIN {FS = OFS = ","} FNR==NR {a[$2] = $0; next} ($2 in a) {print $0}'  <(gzip -dc /cygdrive/e/Test/Master.csv.gz) <(gzip -dc /cygdrive/f/Jan/Input_Jan.csv.gz)
awk ' BEGIN {FS = OFS = ","} FNR==NR {a[$2] = $0; next} ($2 in a) {print $0}'  <(gzip -dc /cygdrive/e/Test/Master.csv.gz) <(gzip -dc /cygdrive/f/Feb/Input_Feb.csv.gz)

输出:

Name,Age,Location
abc,20,xxx
def,40,yyy

已尝试以下命令打印文件名目录且不完整

awk ' BEGIN {FS = OFS = ","} FNR==NR {a[$2] = $0; next} ($2 in a) {print $0,FILENAME}'  <(gzip -dc /cygdrive/e/Test/Master.csv.gz) <(gzip -dc /cygdrive/f/Jan/Input_Jan.csv.gz)
awk ' BEGIN {FS = OFS = ","} FNR==NR {a[$2] = $0; next} ($2 in a) {print $0,FILENAME}'  <(gzip -dc /cygdrive/e/Test/Master.csv.gz) <(gzip -dc /cygdrive/f/Feb/Input_Feb.csv.gz)

awk ' BEGIN {FS = OFS = ","} FNR==NR {a[$2] = $0; next} ($2 in a) {print $0,$file}'  <(gzip -dc /cygdrive/e/Test/Master.csv.gz) <(gzip -dc /cygdrive/f/Jan/Input_Jan.csv.gz)
awk ' BEGIN {FS = OFS = ","} FNR==NR {a[$2] = $0; next} ($2 in a) {print $0,$file}'  <(gzip -dc /cygdrive/e/Test/Master.csv.gz) <(gzip -dc /cygdrive/f/Feb/Input_Feb.csv.gz)

期望的输出:

Name,Age,Location, FileName1,FileName2
abc,20,xxx,/cygdrive/e/Test/Master.csv.gz,/cygdrive/f/Jan/Input_Jan.csv.gz
def,40,yyy,/cygdrive/e/Test/Master.csv.gz,/cygdrive/f/Feb/Input_Feb.csv.gz

寻找您的建议..

【问题讨论】:

    标签: awk


    【解决方案1】:

    问题是 awk 看不到您的输入文件。它会看到进程替换文件。所以你不能从那里得到你想要的名字。

    这样的事情应该可以工作(以重复自己为代价)。

    awk ' BEGIN {FS = OFS = ","} FNR==NR {a[$2] = $0; next} ($2 in a) {print $0,$file}' file=/cygdrive/e/Test/Master.csv.gz <(gzip -dc /cygdrive/e/Test/Master.csv.gz) file=/cygdrive/f/Jan/Input_Jan.csv.gz <(gzip -dc /cygdrive/f/Jan/Input_Jan.csv.gz)
    

    您也许可以通过仅将文件名传递给 awk 来玩游戏,然后使用管道命令中的getline 来执行此操作,但我认为这不值得。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-31
      • 2011-12-19
      • 2010-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-16
      • 1970-01-01
      相关资源
      最近更新 更多