语法: sed [-hnv] [-e <script>] [-f <script 文件>] [文本文件]
参数:
-e <script> 以选项中指定的script来处理输入的文件
-f <script 文件> 以选项中指定的script文件来处理输入的文件
-h 显示帮助
-n --quiet或--silent 仅显示script处理后的结果.
-V 或 --version 显示版本信息
在参数中使用的script语法: [行号] [/查找字符串/命令 <参数>]
[行号] : [行号, 行号], 指定第一个行号和第二个行号之间的每一行
[行号!] 除此行之外的所有行
不指定行号,且没有指定/查找字符串/, 处理输入文件的每一行
a\<字符串> : 在指定的行后新增一行<字符串>
c\<字符串> : 以<字符串> 取代指定的行
d: 删除指定的行
i\<字符串> : 在指定的行前新增一行<字符串>
p: 显示指定的行
r<文本文件>: 先处理此处指定的文本文件, 然后处理命令行中所指定的文本文件
s/<查找字符串>/<取代字符串>/<取代方式>: 取代方式有3种
n: 取代第n个找到的<查找字符串>
g: 取代所有找到的<查找字符串>
p: 取代后,再显示一次此行
w<文本文件>: 在此文件填入指定字符
y/<查找字符>/<取代字符>/: <查找字符>和<取代字符>的长度必须相同
范例:
- 查找含有"target"的行,在后面新增一行,内容是" A New Line"
trace@realize:~/study/shell/sed$ cat sed_script /target/a\ A new line trace@realize:~/study/shell/sed$ cat textfile This is 1st line This is target line This is last line trace@realize:~/study/shell/sed$ sed -f sed_script textfile This is 1st line This is target line A new line This is last line trace@realize:~/study/shell/sed$
- 将textfile中第1,2行的"is"取代为12
trace@realize:~/study/shell/sed$ sed -e 1,2s/is/12/g textfile Th12 12 1st line Th12 12 target line This is last line
- 将textfile中第1,2行的"i"取代为1, "s"取代为2:
trace@realize:~/study/shell/sed$ sed -e 1,2y/is/12/ textfile Th12 12 12t l1ne Th12 12 target l1ne This is last line
- 将textfile中第2,3行写入newfile文件中
trace@realize:~/study/shell/sed$ cat sed_script 1!w newfile trace@realize:~/study/shell/sed$ sed -f sed_script textfile This is 1st line This is target line This is last line trace@realize:~/study/shell/sed$ cat newfile This is target line This is last line