关于sed的一点疑问(已解决)

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
Jarson
帖子: 2371
注册时间: 2008-07-21 9:44
来自: 深圳
联系:

关于sed的一点疑问(已解决)

#1

帖子 Jarson » 2009-09-16 0:36

最近在学习sed,发现使用sed来处理(编辑)文档时,sed 并非直接在原文档中进行修改,而是把对文档的修改效果直接复制输入到标准输出,虽然可以重定向到一个文件,但还是想问一下sed是否也可以直接对原文档进行编辑的工作?
上次由 Jarson 在 2009-09-16 16:15,总共编辑 1 次。
t3swing
帖子: 1028
注册时间: 2008-11-01 21:42
来自: 树下板凳

Re: 关于sed的一点疑问

#2

帖子 t3swing » 2009-09-16 8:40

这个还是不太好,搞错了如何撤销 ?不象vi,改了还可以撤销,不能回退的话风险太大,还是要备份,就显得意义不大
不过还是期待高手解答啊 !
民族的脊梁,是踏实做事的人,非只知道骂街的泼妇。
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 关于sed的一点疑问

#3

帖子 eexpress » 2009-09-16 9:08

sed -i xxx yyy
● 鸣学
头像
HuntXu
帖子: 5776
注册时间: 2007-09-29 3:09

Re: 关于sed的一点疑问

#4

帖子 HuntXu » 2009-09-16 10:04

-i
我输入的正文过短...
HUNT Unfortunately No Talent...
t3swing
帖子: 1028
注册时间: 2008-11-01 21:42
来自: 树下板凳

Re: 关于sed的一点疑问

#5

帖子 t3swing » 2009-09-16 10:05

-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if extension supplied)
还是备份的好 ee好强大
民族的脊梁,是踏实做事的人,非只知道骂街的泼妇。
cocoready
帖子: 15
注册时间: 2009-08-13 12:11

Re: 关于sed的一点疑问

#6

帖子 cocoready » 2009-09-16 13:21

sed的原理就是将文本一行一行的读入到一个模式空间(内存),然后进行修改后,打印到标准输出上。
如果你要修改文件,可以使用
sed -c
头像
Jarson
帖子: 2371
注册时间: 2008-07-21 9:44
来自: 深圳
联系:

Re: 关于sed的一点疑问

#7

帖子 Jarson » 2009-09-16 16:13

代码: 全选

fhc2007@fhc2007-desktop:~$ sed --help
用法: sed [选项]... {脚本(如果没有其他脚本)} [输入文件]...

  -n, --quiet, --silent
                 取消自动打印模式空间
  -e 脚本, --expression=脚本
                 添加“脚本”到程序的运行列表
  -f 脚本文件, --file=脚本文件
                 添加“脚本文件”到程序的运行列表
  -i[扩展名], --in-place[=扩展名]
                 直接修改文件(如果指定扩展名就备份文件)
  -l N, --line-length=N
                 指定“l”命令的换行期望长度
  --posix
                 关闭所有 GNU 扩展
  -r, --regexp-extended
                 在脚本中使用扩展正则表达式
  -s, --separate
                 将输入文件视为各个独立的文件而不是一个长的连续输入
  -u, --unbuffered
                 从输入文件读取最少的数据,更频繁的刷新输出
      --help     打印帮助并退出
      --version  输出版本信息并退出

如果没有 -e, --expression, -f 或 --file 选项,那么第一个非选项参数被视为
sed脚本。其他非选项参数被视为输入文件,如果没有输入文件,那么程序将从标准
输入读取数据。

将错误报告通过电子邮件发送到:[email protected] .
请务必将单词“sed”放在标题的某处。

算是弄明白了,多加一个 -i 选项就行 :em06
回复