我需要相当于" egrep -a" solaris中的选项。
目前这个选项在Red Hat linux中运行良好,但是我们想在另一个具有solaris风格的服务器中迁移一些代码。
所以需要知道" egrep -a"在solaris。
感谢。
答案 0 :(得分:1)
请求的功能(见manual)已记录在案
-a
--text
处理二进制文件,就好像它是文本一样;这相当于
--binary-files=text
选项。
--binary-files=
型如果文件的分配元数据,或者如果在行选择输出之前读取其数据,则指示该文件包含二进制数据,假设该文件是类型类型。默认情况下,type为'binary',grep通常会输出一行表示二进制文件匹配的消息,如果没有匹配则不输出消息。匹配二进制数据时,grep可能会将非文本字节视为行终止符。
如果type为'without-match',则grep假定二进制文件不匹配;这相当于-I选项。
如果type为'text',则grep处理二进制文件,就好像它是文本一样;这相当于-a选项。
警告:' - binary-files = text'可能会输出二进制垃圾,如果输出是终端,并且终端驱动程序将其中一些解释为命令,则会产生令人讨厌的副作用。
Solaris grep(请参阅manual)没有此功能。可以使用第三方软件包,例如,来自OpenCSW的CSWggrep。
答案 1 :(得分:1)
-a
选项是GNU grep扩展,没有POSIX等价物。
如果您安装了完整的Solaris 10,则可能已在grep
中安装了GNU /usr/sfw/bin/ggrep
(双g不是拼写错误)。
然后您可以通过以下方式替换egrep -a ...
出现:
if [ -x /usr/sfw/bin/ggrep ] ; then
EGREP_A="/usr/sfw/bin/ggrep -E"
else
EGREP_A="egrep -a"
fi
$EGREP_A ...
如果未安装,您可以从安装介质(CD / DVD)轻松安装该软件包SUNWggrp
。
如果由于某种原因,您无法执行此操作,则需要提供有关它是什么类型的二进制文件以及您在其中搜索的模式的更多详细信息。
使用标准Solaris工具肯定还有其他方法可以解决这个问题。