多个 sed 命令可以放在一个文件中,并使用以下-f选项。当创建此类文件时,请确保
行尾没有尾随空格。
不使用引号。
当输入要添加或替换的文本时,除最后一行外,所有行都以反斜杠结尾。
写入输出是使用输出重定向运算符 > 完成的。这是一个示例脚本,用于从纯文本文件创建非常简单的 HTML 文件。
sandy ~> cat script.sed 1i\ <html>\ <head><title>sed generated html</title></head>\ <body bgcolor="#ffffff">\ <pre> $a\ </pre>\ </body>\ </html> sandy ~> cat txt2html.sh #!/bin/bash # This is a simple script that you can use for converting text into HTML. # First we take out all newline characters, so that the appending only happens # once, then we replace the newlines. echo "converting $1..." SCRIPT="/home/sandy/scripts/script.sed" NAME="$1" TEMPFILE="/var/tmp/sed.$PID.tmp" sed "s/\n/^M/" $1 | sed -f $SCRIPT | sed "s/^M/\n/" > $TEMPFILE mv $TEMPFILE $NAME echo "done." sandy ~> |
$1持有给定命令的第一个参数,在本例中是要转换的文件的名称
sandy ~> cat test line1 line2 line3 |
关于位置参数的更多信息,请参阅第七章。
sandy ~> txt2html.sh test converting test... done. sandy ~> cat test <html> <head><title>sed generated html</title></head> <body bgcolor="#ffffff"> <pre> line1 line2 line3 </pre> </body> </html> sandy ~> |
这实际上不是它的完成方式;此示例仅演示了 sed 的功能。有关使用 awk BEGIN 和 END 构造来解决此问题的更合适的解决方案,请参阅第 6.3 节。
![]() | 简易 sed |
---|---|
支持语法高亮显示的高级编辑器可以识别 sed 语法。如果您容易忘记反斜杠等,这将非常有帮助。 |