Chinaunix

标题: 输入文件同时也是输出文件 [打印本页]

作者: 顾阿卡1    时间: 2014-09-02 00:44
标题: 输入文件同时也是输出文件


我想把一个文件里面的内容编辑输出(相当于把一个text文件打开并编辑好了以后保存的效果)

但是输出了结果为一个空文件.如说输出到另外的文件结果是正常的.请问这种情况怎么解决.

ps:我有去看shell下的 >    >> 含义,> 清空并输出内容;按照这个思路应该能达到我的效果,但是为什么就是空文件呢?!求大神解救~
作者: q1208c    时间: 2014-09-02 08:22
我不知道是谁教楼主这样的写法, 我只能说, 这样的教法很不负责任.

简单的说, 这是先有鸡还是先有蛋的问题. 我们假设输入是鸡, 输出是蛋.
">" 输出 要求鸡窝必须是空的, 所以, 鸡被抱走了, 那么, 谁还给你下蛋呢?
">>" 输出, 不要求鸡窝必须是空的, 所以, 它可以下蛋.

不过, 我极不建议这样的做法. 很容易把有用的数据一下子清空. 然后, 哭都找不到地方.
作者: yestreenstars    时间: 2014-09-02 08:54
用sed或perl吧~
作者: bulletmarquis    时间: 2014-09-02 09:26
回复 1# 顾阿卡1


    sed -i 'xxxx' filename
作者: Herowinter    时间: 2014-09-02 09:29
回复 1# 顾阿卡1

目测
sed -i '/个性/!d' keywords.txt
和你的命令等价.
   
作者: 顾阿卡1    时间: 2014-09-02 09:38
回复 2# q1208c


    首先谢谢你这么负责,但是我是因为有这样的需求才这样写的,实际需求中是要把这个文件里面的内容按照一定的条件循环提出关键词,所以只能在这个文件中操作.
作者: 顾阿卡1    时间: 2014-09-02 09:40
回复 4# bulletmarquis


    谢谢~晚一点我去试试看.

作者: q1208c    时间: 2014-09-02 10:12
回复 6# 顾阿卡1

通常都是 生成一个 临时文件, 再 rename 回原来的文件的.
   
作者: bulletmarquis    时间: 2014-09-02 14:04
回复 7# 顾阿卡1


cat a
abc
adf
aer
axc

sed -i 's/a/j/g' a

cat a
jbc
jdf
jer
jxc

sed -i '/bc/d' a

cat a
jdf
jer
jxc
作者: Shell_HAT    时间: 2014-09-02 14:09
楼主用的是Cygwin吧,估计不支持sed -i




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2