将标准输出用作awk中的输入

巴波尔斯

我有一个文件,由于权限问题,我无法进行任何修改。

因此,我只能使用一个工具及其查看选项来可视化文件,该工具将其内容打印到带有8个制表符分隔列的标准输出中:

foo-tool view file1.txt
ALICE  .  CANDY   1990  . 76 76 78
MARK   .  CARAMEL 1991  . 45 88 88
CLAIRE .  SALTY   XXX   . 77 82 12

我有,我想它比较其他文件1st,6th and 7th列与1st,6th and 7thfile1.txt,并添加3rd and 4thfile1.txtfile2.txt在这些列中的任何匹配的情况下。

file2.txt
ALICE  .  CANDY   1990  . 76 76 97
MARK   .  CARAMEL 1991  . 45 88 87
BLAINE .  SALTY   XXX   . 77 82 10

如果我能够打开file1.txt而不是仅打开标准输出,我会这样做:

awk 'NR==FNR { a[$1,$6,$7] = $0; next }($1,$6,$7) in a { print a[$1,$6,$7], $3, $4 }' file1.txt file2.txt

因此输出将是:

ALICE  .  CANDY 1990  . 76 76 78 CANDY    1990
MARK   .  54    1991  . 45 88 88 CARAMEL  1991

但是,由于我不能将standard outputoffile1.txt作为文件使用,因此我对如何进行操作感到困惑。我试图打开它并定向其标准输出,但是它不起作用:

foo-tool view file1.txt | awk 'NR==FNR { a[$1,$6,$7] = $0; next }($1,$6,$7) in a { print a[$1,$6,$7], $3, $4 }' ARG[$1] file2.txt 

如何将标准输出作为awk中的文件输入作为文件之一传递?

希恩

-”(破折号)是特殊的文件名,表示标准输入。许多Unix工具都使用了这个约定,尤其是awk

然后,您的命令行必须是:

$ foo-tool view file1.txt | awk '{ your_program }' - file2.txt

或者,如果您的系统支持(Linux支持),则可以使用以下/dev/stdin文件:

$ foo-tool view file1.txt | awk '{ your_program }' /dev/stdin file2.txt

如果您的外壳支持它,您也可以使用“进程替换”(bash,ksh和zsh这样做):

$ awk '{ your_program }' <(foo-tool view file1.txt) file2.txt

如果您必须处理几个不同命令的输出,这可能会很有用,例如:

$ awk '{ your_program }' <(foo-tool view file1.txt) <(foo-tool view file2.txt)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将python程序的标准输出输入到Popen标准输入中?

将标准输入重定向到标准输出

在Bazel中,是否可以将函数输出用作load语句的输入?

在 bash 脚本中重定向标准输入和标准输出

关闭标准输出或标准输入

AWK检测标准输入

如何将ls / grep的输出用作pdfunite的输入

是否可以将CNN的平坦层的输出用作RNN的输入?

将文件输入的标准输出保存到文件

使用python将标准数学输入转换为类型输出

如何将一个操作的输出用作批处理文件中其他操作的输入?

将标准输出重定向到标准错误,但也保留在标准输出中

利用awk中的变量,然后将输出输入另一个变量

是否可以将文件源用作输入,而将jdbc-sink用作kafka的输出?

如何从for循环索引的标准输出中获取用户输入

从文件重定向输入,但也显示在标准输出中?

如何在仍在运行的标准输入中写入进程标准输入并从其标准输出中读取?

如何将命令的标准输出和标准输入都重定向到一行中的文本文件?

将进程的标准输出重定向到其自己的标准输入

记录标准输入和标准输出

记录标准输入和标准输出

阅读并打印“标准输入和标准输出”

重定向标准输入和标准输出?

如何使用Unittest测试来测试Python脚本中的标准输入和标准输出?

将插入查询的输出参数用作Java中相同存储过程中另一个插入查询的输入参数

将.xlsx文件用作Shiny App中的输入

如何“抓”标准输入,标准输出,在Python程序的标准错误?

无法将标准输出复制到python中的文件

Ansible:将命令的标准输出存储在新变量中吗?