unix shell报错: Segmentation Fault

物润声无 2012-08-16 02:03:37
egrep -f accounts1 RMABAL

文件:
-rwxrwxrwx 1 plchai staff 10025665 Aug 16 00:36 accounts1
-rwxrwxrwx 1 plchai staff 19560 Aug 16 00:36 RMABAL

系统:
SunOS us97udb026ampsb 5.9 Generic_122300-60 sun4u sparc SUNW,Sun-Fire


报错:
Segmentation Fault(coredump)


原因? 请教, 谢谢
...全文
817 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Linux-Torvalds 2012-08-21
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

好吧,改用perl,写一个吧~

不过还想问一下:多大的文件grep才能处理? 还是系统内存配置可以控制?
[/Quote]这个应该不是。
物润声无 2012-08-18
  • 打赏
  • 举报
回复
好吧,改用perl,写一个吧~

不过还想问一下:多大的文件grep才能处理? 还是系统内存配置可以控制?

olison77 2012-08-18
  • 打赏
  • 举报
回复
perl 寫一個 +1.
物润声无 2012-08-16
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
引用 6 楼 的回复:

引用 1 楼 的回复:
egrep已经不再支持了,用grep -E 代替


你好, root_jli
我用的是sun 的Solaris 5.9, 不支持 POSIX标准
这个不是达到了你的要求了吗?
while read line;do grep $line ./RMABAL_test>>test_b; done<accounts
[/Quote]

while read line;do grep $line ./RMABAL_test>>test_b; done<accounts
可以运行结果正确。换成下面的语句:

while read line;do grep $line ./RMABAL>>test_b; done<accounts.txt
报错grep: can't open

RMABAL_test、 accounts 都是小文件,换成大的这种方法就不行了~~
Linux-Torvalds 2012-08-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

引用 1 楼 的回复:
egrep已经不再支持了,用grep -E 代替


你好, root_jli
我用的是sun 的Solaris 5.9, 不支持 POSIX标准
[/Quote]这个不是达到了你的要求了吗?
while read line;do grep $line ./RMABAL_test>>test_b; done<accounts
物润声无 2012-08-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
egrep已经不再支持了,用grep -E 代替
[/Quote]

你好, root_jli
我用的是sun 的Solaris 5.9, 不支持 POSIX标准
morris88 2012-08-16
  • 打赏
  • 举报
回复
用perl之类写一个
物润声无 2012-08-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
accounts1可能这个文件里面的内容太多了,无法处理。
[/Quote]

应该是文件太多的缘故,换一个小的
-rwxrwxrwx 1 plchai staff 576 Aug 1 02:03 accounts
-rwxrwxrwx 1 plchai staff 23580 Aug 16 00:36 RMABAL_test

egrep -f accounts RMABAL_test

有什么办法实现这个功能吗?

现有一个 account detail 文件,和一个account id list 文件。
后者约有30万个id,

现在要将account id list 文件中的 account id 的详细信息从 account detail文件中移除 另存一个文件夹。
换一种写法:

while read line;do grep $line ./RMABAL_test>>test_b; done<accounts
可以运行结果正确。换成下面的语句:


while read line;do grep $line ./RMABAL>>test_b; done<accounts.txt
grep: can't open


有什么好办法吗?
在线等~

morris88 2012-08-16
  • 打赏
  • 举报
回复
之外。
  egrep 命令会显示包含该匹配行的文件,如果您指定了多于一个 File 参数的话。对 shell 有特殊含义的字符 ($, *, [, |, ^, (, ), \ ) 出现在 Pattern 参数中时必须带双引号。如果 Pattern 参数不是简单字符串,通常必须用单引号将整个模式括起来。在表达式中比如 [a-z],减号表示通过当前整理序列。整理序列可以定义等价的类以供在字符范围中使用。它使用了快速确定性的算法,有时需要外部空间。
  注意:
  1. 行被限制在 2048 字节。
  2. 段落(在 -p 标志下)当前限制在 5000 字符长。
  3. 不要在特殊文件上运行 grep 命令,因为它会产生不可预测的结果。
  4. 输入行不应该包含 NULL 字符。
  5. 输入文件应该以换行符结束。
  6. 尽管有些标志可以同时被指定,但是有些标志会覆盖其他的标志。例如,如果同时指定 -l 和 -n ,只有文件名写入到标准输出中去。
Linux-Torvalds 2012-08-16
  • 打赏
  • 举报
回复
accounts1可能这个文件里面的内容太多了,无法处理。
root_jli 2012-08-16
  • 打赏
  • 举报
回复
egrep已经不再支持了,用grep -E 代替

1,544

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 Solaris
社区管理员
  • Solaris
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧