【发布时间】:2018-06-07 20:34:01
【问题描述】:
在 bash 脚本中,我尝试对每个文件调用以下 Perl 命令,然后我想将 Perl 命令的输出重定向到该文件。
Perl 命令只是removes the comments from the file。当它打印到控制台时,它似乎可以工作。但是当我尝试将输出重定向到每个单独的文件时,该文件变为空。我在这里做错了什么?
#!/usr/bin/env bash
shopt -s globstar
for file in ./**/*.java; do
perl -0pe 's|//.*?\n|\n|g; s#/\*(.|\n)*?\*/##g; s/\n\n+/\n\n/g' "$file" > "$file";
done
【问题讨论】:
-
提示:
-0实际上并没有吞下文件。你应该改用-0777。 -
@ikegami 怎么能不逐行处理文件?
-
阅读
$/ = "\0";(-0) 和$/ = undef;(-0777) 之间的区别。这不是第一个啜饮的意图(也不会总是)。