如何避免在bash脚本中生成中间文件

时间:2017-07-07 22:07:23

标签: bash awk output

我想知道是否可以更改以下脚本,例如" intermediate.tmp"不是作为输出生成的:

要在命令行上调用脚本:

./script.sh file1 file2

script.sh:

#!/bin/bash

FILE_1=$1
FILE_2=$2

awk '{print $1,$2}' $FILE_1 > intermediate.tmp

awk 'NR==FNR {h[$1] = $0; next} {print $0,h[$1]}' intermediate.tmp $FILE_2 > output.file

awk脚本本身并不重要。我只是想知道如何"饲料"将intermediate.tmp放入第二个awk命令中,除了所需的output.file外,还不生成一个intermediate.tmp输出文件。

感谢。

1 个答案:

答案 0 :(得分:2)

awk 'NR==FNR {h[$1] = $1 OFS $2; next} {print $0,h[$1]}' "$FILE_1" "$FILE_2" > output.file

或不太明智:

awk '{print $1,$2}' "$FILE_1" |
awk 'NR==FNR {h[$1] = $0; next} {print $0,h[$1]}' - "$FILE_2" > output.file