9.用新文本替换定位文本
替换命令用替换模式替换指定模式,格式为:
[ address[,address]]s/pattern-to-find/replacement-pattern/[gpwn]
s选项通知sed这是一个替换操作,并查询pattern-to-find,成功后用replacement-pattern替换它。
替换选项如下:
g缺省情况下只替换第一次出现模式,使用 g选项替换全局所有出现模式。
p缺省sed将所有被替换行写入标准输出,加 p选项将使-n选项无效。-n选项不打印输出结果。
w 文件名 使用此选项将输出定向到一个文件。
举例:
将文本中的nurse改变为doctor
sed 's/nurse/doctor/' sed.txt
将$符号去掉
sed 's/\$//' sed.txt #由于是特殊符号 所以要\
将the变成THE 进行全局改变
sed 's/The/THE/g' sed.txt
输入到文件并且输入到屏幕
sed 's/The/THE/w sed.out' sed.txt
10.使用替换修改字符串
如果要附加或修改一个字符串,可以使用(&)命令, &命令保存发现模式以便重新调用
它,然后把它放在替换字符串里面。这里给出一个修改的设计思路。先给出一个被替换模式,
然后是一个准备附加在第一个模式后的另一个模式,并且后面带有 &,这样修改模式将放在
匹配模式之前。例如, sed语句s/nurse/"Hello"&/p 的结果如下:
在nurse前面加Hello
#sed -n 's/nurse/"Hello" &/p' sed.txt
sed -n 's/nurse/Hello &/p' sed.txt
11.将sed结果写入文件命令
将1,2两行加入到out文件中
sed '1,2 w out' sed.txt
先匹配nurse 在进行输入
sed '/nurse/ w out' sed.txt
12.处理控制字符
使用sed实现的一个重要功能是在另一个系统中下载的文件中剔除控制字符。
首先建立一个文本dos.txt
12332##DISO##45.12^M
00332##LPSO##23.11^M
01299##USPD##34.46^M
1)首先删除所有的##
sed 's/##*/ /g' dos.txt
2)删除所有行首为0的
sed 's/^0*/ /g' dos.txt
3)去掉末尾的^M
sed 's/\^M//g' dos.txt
最后综合一下 就可以看见一个比较理想的结果了
cat dos.txt | sed 's/##*/ /g'|sed 's/^0*/ /g'|sed 's/\^M//g'
4)去除掐面的数字
sed 's/^[0-9]*//g' dos.txt
当然还可以上出空行
使用/^$/d删除空行
下面是一些特殊的命令形式
[]表示空格, [ ]表示tab键
‘s/\.$//g’ 删除以句点结尾行
‘-e /abcd/d’ 删除包含 abcd的行
‘s/[][][]*/[]/g’ 删除一个以上空格,用一个空格代替
‘s/^[][]*//g’ 删除行首空格
‘s/\.[][]*/[]/g’ 删除句点后跟两个或更多空格,代之以一个空格
‘/^$/d’ 删除空行
‘s/^.//g’ 删除第一个字符
‘s/COL\(...\)//g’ 删除紧跟 COL的后三个字母
‘s/^\///g’ 从路径中删除第一个 \
‘s/[]/[ ]//g’ 删除所有空格并用 tab键替代
‘S/^[ ]//g’ 删除行首所有 tab键
‘s/[]*//g’ 删除所有 tab键
举例:
删除行首的/
echo $PWD | sed 's/^\///g'
向其中添加信息
echo "Jack Hello" | sed 's/Jack /& Li /g'
删除首字母
echo "Hello" | sed 's/^.//g'
获得文件名
echo "jack.txt" | sed 's/.txt//g'
or
替换命令用替换模式替换指定模式,格式为:
[ address[,address]]s/pattern-to-find/replacement-pattern/[gpwn]
s选项通知sed这是一个替换操作,并查询pattern-to-find,成功后用replacement-pattern替换它。
替换选项如下:
g缺省情况下只替换第一次出现模式,使用 g选项替换全局所有出现模式。
p缺省sed将所有被替换行写入标准输出,加 p选项将使-n选项无效。-n选项不打印输出结果。
w 文件名 使用此选项将输出定向到一个文件。
举例:
将文本中的nurse改变为doctor
sed 's/nurse/doctor/' sed.txt
将$符号去掉
sed 's/\$//' sed.txt #由于是特殊符号 所以要\
将the变成THE 进行全局改变
sed 's/The/THE/g' sed.txt
输入到文件并且输入到屏幕
sed 's/The/THE/w sed.out' sed.txt
10.使用替换修改字符串
如果要附加或修改一个字符串,可以使用(&)命令, &命令保存发现模式以便重新调用
它,然后把它放在替换字符串里面。这里给出一个修改的设计思路。先给出一个被替换模式,
然后是一个准备附加在第一个模式后的另一个模式,并且后面带有 &,这样修改模式将放在
匹配模式之前。例如, sed语句s/nurse/"Hello"&/p 的结果如下:
在nurse前面加Hello
#sed -n 's/nurse/"Hello" &/p' sed.txt
sed -n 's/nurse/Hello &/p' sed.txt
11.将sed结果写入文件命令
将1,2两行加入到out文件中
sed '1,2 w out' sed.txt
先匹配nurse 在进行输入
sed '/nurse/ w out' sed.txt
12.处理控制字符
使用sed实现的一个重要功能是在另一个系统中下载的文件中剔除控制字符。
首先建立一个文本dos.txt
12332##DISO##45.12^M
00332##LPSO##23.11^M
01299##USPD##34.46^M
1)首先删除所有的##
sed 's/##*/ /g' dos.txt
2)删除所有行首为0的
sed 's/^0*/ /g' dos.txt
3)去掉末尾的^M
sed 's/\^M//g' dos.txt
最后综合一下 就可以看见一个比较理想的结果了
cat dos.txt | sed 's/##*/ /g'|sed 's/^0*/ /g'|sed 's/\^M//g'
4)去除掐面的数字
sed 's/^[0-9]*//g' dos.txt
当然还可以上出空行
使用/^$/d删除空行
下面是一些特殊的命令形式
[]表示空格, [ ]表示tab键
‘s/\.$//g’ 删除以句点结尾行
‘-e /abcd/d’ 删除包含 abcd的行
‘s/[][][]*/[]/g’ 删除一个以上空格,用一个空格代替
‘s/^[][]*//g’ 删除行首空格
‘s/\.[][]*/[]/g’ 删除句点后跟两个或更多空格,代之以一个空格
‘/^$/d’ 删除空行
‘s/^.//g’ 删除第一个字符
‘s/COL\(...\)//g’ 删除紧跟 COL的后三个字母
‘s/^\///g’ 从路径中删除第一个 \
‘s/[]/[ ]//g’ 删除所有空格并用 tab键替代
‘S/^[ ]//g’ 删除行首所有 tab键
‘s/[]*//g’ 删除所有 tab键
举例:
删除行首的/
echo $PWD | sed 's/^\///g'
向其中添加信息
echo "Jack Hello" | sed 's/Jack /& Li /g'
删除首字母
echo "Hello" | sed 's/^.//g'
获得文件名
echo "jack.txt" | sed 's/.txt//g'
or
echo "jack.txt" | sed 's/.txt$//g'
参考书籍:shell脚本编程