当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 2 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : grep 的结果输入到文件,为何没有任何记录?
帖子发表于 : 2017-03-04 20:57 

注册: 2016-07-08 17:43
帖子: 88
系统: debian8
送出感谢: 12
接收感谢: 0 次
cat /var/log/test.log |grep -v 'connecting' > /var/log/test.log

为何导致/var/log/test.log没有任何记录?
cat /var/log/test.log |grep -v 'connecting' 可是有结果的。


页首
 用户资料  
 
2 楼 
 文章标题 : Re: grep 的结果输入到文件,为何没有任何记录?
帖子发表于 : 2017-03-04 21:09 
头像

注册: 2011-03-20 13:12
帖子: 4534
地址: 山东省寿光县
系统: Debian
送出感谢: 105
接收感谢: 1001
重定向到同一个文件是行不通的。

参考
http://askubuntu.com/questions/528658/redirect-pipe-output-to-the-same-file
http://www.unix.com/unix-and-linux-applications/136885-how-redirect-grep-command-output-same-file.html

thomasrutter 写道:
你的建议示例(下面)不工作,因为你实际上是从同一个文件同时读取和写入同一个文件。

$ cat filename | sort | uniq > filename
使用管道或重定向的想法是,每个管道或重定向的左侧和右侧的命令同时并行运行。右边的命令处理信息,当它从左边的命令交给它,而左边的命令仍然在运行。

为了使您的场景工作,从文件读取的命令需要在写入文件的命令开始之前完成。为了这个工作,你需要首先将输出重定向到一个临时位置,然后一旦完成,将其从临时位置发送回文件。

一个更好的方法是基本上像你的前一个例子,你重定向到一个临时文件,然后重命名该文件回原来的(除了你不需要先删除文件,因为移动删除任何现有的目标) 。

$ cat filename | sort | uniq > result
$ mv -f result filename
您还可以将其保存为字符串变量,除非只有当数据足够小,以便一次性适合所有内存。


_________________
Debian 中文论坛 - forums.debiancn.org
欢迎所有 Debian GNU/Linux 用户



_________________
评价: 3.7% whaha
 
页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 2 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译