【问题标题】:Grep doesn't work correctly with .as filesGrep 不能正确处理 .as 文件
【发布时间】:2009-11-20 01:46:59
【问题描述】:

这是我正在运行的语句:

grep -i -H 'ConfigureControls' *.as

请注意,我强制使用 -H 标志的文件名。

我得到的是:

}       }   trac}   }   this.chairControls.debug.appendText("\nAn error occured when communicating with server:\n" + err.message);l);his.chairXML.storeResult;
{ackage {ublic cpublic frequest = new URLRequest(this.chairXML.store);to: " + this.chairXML.store;noll

没有文件名,而且文本看起来也很混乱(例如,package 变成了{ackage)。怎么回事?

【问题讨论】:

  • 您能粘贴一个.as 文件的示例
  • 它对我来说非常好grep --version GNU grep 2.5.4检查环境变量。

标签: actionscript-3 unix grep


【解决方案1】:

听起来您在需要 LF (unix) 或 CR/LF (DOS/Windows) 的机器上查找旧的 Mac (OS

在这种情况下,它实际上是正确 grepping,但您的终端将 CR 换行解释为“将光标移动到行首”,而在显示时没有前进到空行。

如果您使用的是类 unix 系统(OSX 也应该可以),请尝试转换 eol 样式:

grep 'pattern' file | tr '\r' '\n'

如果可行,您实际上可以使用以下命令转换文件的 eol 样式:

tr '\r' '\n' < file.as > fixed-file.as

【讨论】:

  • 除了进入每个文件并更改行尾之外,还有其他解决方法吗?
  • 大多数现代编辑器都有相应的设置。确保它保存为 Unix(甚至 DOS)。 en.wikipedia.org/wiki/Newline 有更多信息和建议的转换程序。
  • 另外,如果您使用 FTP 将文件从非 Unix 系统传输到 Unix,请确保您的客户端设置为以 ASCII 模式传输 .as 文件,它应该自动转换 eol-风格。
  • 不幸的是,管道到 tr 不起作用 - 它只是打印出目录中的所有 .as 文件。我认为此时我最好的选择是编写一个 shell 脚本来实现您的第二个建议。
  • 在 Wikipedia 链接中有指向转换器程序的链接。安装flip,你可以给它一个通配符,或者find . -name '*.as' -print0 | xargs -0 flip -u来转换当前目录下的所有东西(或者改变.到一个特定的路径)。
猜你喜欢
  • 1970-01-01
  • 2018-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-12
  • 1970-01-01
  • 2019-05-08
  • 1970-01-01
相关资源
最近更新 更多