关于bash:是否可以解析标准错误而无需先写入文件?

Is it possible to parse standard error without writing out to a file first?

本问题已经有最佳答案,请猛点这里访问。

在一个简单的例子中,假设我们有一些标准错误:

1
2
$ ls /fake/file
ls: /fake/file: No such file or directory

问题:是否可以从标准错误中解析出"/fake/file"而无需先将其写入文件? 例如:

1
2
$ ls /fake/file 2> tmp.file; sed 's/.* \(.*\):.*/\1/' tmp.file
/fake/file


像这样的东西?

1
ls /fake/file 2>&1 | awk -F: '{print $2}'


无论哪种方式都应该获取文件名

1
ls /fake/file 2>&1 | awk -F: '{print $2}' | awk '{print $3}'

要么

1
ls /fake/file 2>&1 | awk '{print $4}' | awk -F: '{print $1}'

要么

1
ls /fake/file 2>&1 | sed 's/.* \(.*\):.*/\1/'