【发布时间】:2013-01-11 07:20:08
【问题描述】:
我有一个包含 1 行文本的文件,名为 output。我对文件有写权限。我可以毫无问题地从编辑器中更改它。
$ cat output
1
$ ls -l o*
-rw-rw-r-- 1 jbk jbk 2 Jan 27 18:44 output
我想要做的是用一个新值替换这个文件中的第一行(也是唯一一行),要么是 1 要么是 0。在我看来,sed 应该是完美的:
$ sed '1 c\ 0' output
0
$ cat output
1
但它永远不会更改文件。我已经尝试在反斜杠处将它分布在 2 行中,并使用双引号,但我无法让它在第一行放置 0(或其他任何内容)。
【问题讨论】:
-
你需要
in-place编辑。请参阅-i标志的手册页。 -
…或者你可以使用
ed,我将继续提到它,因为我很坚持,这实际上是ed的用途。 (与向流编辑器添加非标准扩展名相反,以便它可以写回文件。) -
sed 对流进行操作并将其输出打印到标准输出。如果你想修改你的输入文件,看看下面我的回答。