s/pattern/replacement/ 此命令将匹配 pattern 的文本替换为指定地址中的 replacement 文本。
w file 此命令将指定的地址写到 file。如果没有 address,则此命令缺省使用整个缓冲区。
在文件开头插入文本,第二部分
通过可在脚本中使用的 ed 单命令行程序,您可以容易地在文件开头插入文本。插入操作是使用 ed 并通过 a 命令将给定文本追加到第 0 行(文件开头)来完成的:
$ cat file
This is the end.
$ (echo '0a'; echo 'This is the beginning.'; echo '.'; echo 'wq') | ed -s file
$ cat file
This is the beginning.
This is the end.
$
您可以交互式地完成同样的任务:
$ cat file
This is the end.
$ ed -s file
> 0a
> This is the beginning.
> .
> wq
$ cat file
This is the beginning.
This is the end.
$
若要在文件开头插入另一个文件的内容,可以使用 r 命令:
$ (echo '0r headnotes'; echo 'wq') | ed file
在给定字符串之后插入文本
您可以使用 ed 将任何数量的文本行插入文件中任意行之前或之后。若要在第一个包含给定字符串的行之后插入,可以将该字符串包括在斜杠中,并在后面跟着 a 命令以追加随后的文本。与前面一样,各个行使用一个句点结束,并使用 wq 写入文件并退出。
当您希望在文件中的特定位置追加文本块时,此项技术就会派上用场:
$ ( echo '/begin/a'; echo 'This is the middle.'; \
> echo '.'; echo 'wq') | ed -s file
$ cat file
This is the beginning.
This is the middle.
This is the end.
$
当您对一组文件执行多行文本插入时,此项技术也非常有用。如果要插入大量的行,可以使用 here document,这是使用 << 和一个限制字符串以内联方式指定的文档,用于重定向其后直至到达限制字符串的所有输入(请参见参考资料):
$ for i in *.xml
> { ed -s $i << EOF
> //a \
> \
> johnnycomelately \
> 10 \
> 4 \
> \
> .
> wq
> EOF
> }
$
您可以在给定字符串之后插入一个文件:
$ (echo '/END OF PART I/r footnotes.txt'; echo 'wq') | ed file
删除行
使用 d 命令来删除文件中的行。与本文讨论的所有命令一样,您可以指定任何类型的有效地址,例如特定的行或行范围。在实践中,此单命令行程序最适合于与至少一个匹配的模式结合使用,例如删除从第一个匹配某模式的行到文件结尾的所有行:
$ ( echo '/FOOTNOTES/,$/d'; echo 'wq' ) | ed -s file
也可以按相反方向执行此操作,并删除从该文件的第一行到第一个匹配某模式的行的所有内容:
$ ( echo '1,/\.\.\./d'; echo 'wq' ) | ed -s file
删除尾随空格
通过使用 s 命令并替换一个空替换字符,您可以删除尾随空格: