IO重定向高级用法

如何比较两个程序的输出,但不使用临时文件?

diff <(/usr/bin/gcc --help) <(/usr/local/bin/gcc --help)

避免使用临时文件有两个好处

  • 无需给文件命名。程序员最喜欢的变量名是什么?是i!文件名呢?我喜欢aaaaa
  • 无需清理

下面是个更复杂的例子(这是我第一次用paste)

三个文件,A.txtB.txtC.txt分别保存了三本书的信息,我们希望提取数据到电子表格做分析。三个文件的内容如下:

$ cat A.txt
Chapters: 13
Pages: 400

$ cat B.txt
Chapters: 9
Pages: 700

$ cat C.txt
Chapters: 27
Pages: 1400

使用如下命令,即可得到一个csv输出,导入到电子表格。

$ paste -d, <(ls *.txt | sed -e 's/.txt//') \
  <(grep -h Chapters *.txt | sed -r 's/^.*: ([0-9]+)$/\1/') \
  <(grep -h Pages *.txt | sed -r 's/^.*: ([0-9]+)$/\1/')
A,13,400
B,9,700
C,27,1400

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据