sed用法

until [ -z "$1" -a -z "$2" ]
do
sed -ir '/InputDevice/,/EndSection/{s/'"$1"'.*/'"$1"'" "'"$2"'"/}' /etc/X11/xorg.conf
shift 2
done
exit 0

因为sed是一个非交互性编辑器,必须通过行号或正则表达式指定要改变的文本行

调用sed的三种方式:在命令行键入命令;
将sed命令插入脚本文件,然后调用sed;
将sed命令插入脚本文件,并似sed脚本可执行。

sed [选项] sed命令  输入文件
实际命令要加单引号,sed也允许加双引号

sed [选项] -f sed脚本文件  输入文件

使用第一行具有sed命令解释器的sed脚本文件,格式为:
sed脚本文件 [选项] 输入文件

如果没有指定输入文件,sed从标准输入中接受输入,一般是键盘或重定向结果。

sed 选项:
n 显示打印匹配行
p 打印出来编辑行
c 下一命令是标记命令
f 如果正在调用sed脚本文件,使用此选项。此选项通知sed一个脚本文件支持所有的sed命令

使用sed在文件中查找文本的方式
sed浏览输入文件时,缺省从第一行开始,有两种方式定位文本:
1 使用行号
2 使用正则表达式

3 sed和正则表达式
sed识别任何基本正则表达式和模式以及其行匹配规则。
如果要定位一特殊字符,必须使用(\)屏蔽其特殊含义

4 使用p显示行
sed -n '2p' quote.txt

5 打印范围
sed -n '1,3p' quote.txt

6 打印模式
假设要匹配单词Neave,并打印此行,方法如下:
sed -n '/Neave/'p quote.txt

7 使用模式和行号进行查询
sed -n '4,/The/'p quote.txt

8 匹配元字符
匹配元字符$前,必须使用反斜线\屏蔽其特殊含义。模式为/\$/p。
sed -n '/\$/'p quote.txt

9 显示整个文件
sed -n '1,$p' quote.txt

10 匹配任意字母,后跟任意字母的0次或多次重复,并以ing结尾,模式为/.*ing/

11 首行
sed -n '1'p quote.txt

12 -e选项允许对同一行进行多次修改
每个命令都跟在一个-e后面

13 附加文本
 要附加文本,使用符号a\,可以将指定文本一行或多行附加到指定行。
如果不指定文本防止位置,sed缺省放在每一行后面
附加文本时不能指定范围,只允许一个地址模式

14 创建sed脚本
#!/bin/sed -f
/company/a\
Then suddenly it happened.

15 插入文本
/company/i\  在指定行之前插入
#!/bin/sed -f
4 i\
Then suddenly it happened.

16 修改文本
/模式/c\
修改的文本

17 删除文本
sed '1d' quote.txt //删除第一行
sed '1,3d' quote.txt //删除第一行到第三行

18 替换文本
[address]s /pattern-to-find /replacement-pattern/[g p w n]
s 选项同志sed这是一个替换操作,并查询pattern-to-find,成功后用replacement-pattern替换它

替换选项如下:
g 缺省情况下只替换第一次出现模式,使用g选项替换全局所有出现模式
p 缺省sed将所有被替换行写入标准输出,加p选项将似-n选项无效
w 文件名 使用此选项将输出定向到一个文本
sed  's/night/NIGHT/'p quote.txt


删除$
sed 's/\$//' quote.txt

19 使用替换修改字符串
如果要附加或修改一个字符串,可以使用(&)命令,&命令保存发现模式以便重新调用它,然后把它方在替换字符串里面。
sed -n 's/nurse/"Hello" &/p' quote.txt
在nurse前面插入了"Hello"

20 将sed结果写入文件
sed '1,2 w filedt' qute.txt

21 显示文件中的控制字符
cat -v filename

sed -n '1,$l' func.txt

你可能感兴趣的:(sed)