5.3. 非交互式编辑

5.3.1. 从文件中读取 sed 命令

多个 sed 命令可以放在一个文件中,并使用以下-f选项。当创建此类文件时,请确保

5.3.2. 写入输出文件

写入输出是使用输出重定向运算符 > 完成的。这是一个示例脚本,用于从纯文本文件创建非常简单的 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 BEGINEND 构造来解决此问题的更合适的解决方案,请参阅第 6.3 节

Note简易 sed
 

支持语法高亮显示的高级编辑器可以识别 sed 语法。如果您容易忘记反斜杠等,这将非常有帮助。