有没有办法让 awk (gawk) 忽略或跳过丢失的文件?也就是说,在命令行上传递的文件不再存在于文件系统中(例如,在/proc/[1-9]* 下快速出现/消失的文件)。
默认情况下,丢失的文件是一个 fatal error :-(
我希望能够做这样的事情:
BEGIN { MISSING_FILES_ARE_FATAL = 0 } # <- Wishful thinking!
{ count++ }
END { print count }
包装脚本无法在运行 awk 之前检查文件是否存在,因为它们可能会在检查它们和 awk 然后尝试打开它们之间消失,即,这是一个竞争条件。 (在awk中check-and-open也是一种竞争条件,虽然时间比较紧)
最佳答案
GAWK 4 有 BEGINFILE
您可以在其中测试 ERRNO
并做一个 nextfile
如果 ERRNO
不为空(表示无法打开文件)。
关于error-handling - awk 可以跳过不存在的文件,无竞争吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/217213/