sed简明教程Word格式文档下载.docx
- 文档编号:15759902
- 上传时间:2022-11-15
- 格式:DOCX
- 页数:19
- 大小:19.62KB
sed简明教程Word格式文档下载.docx
《sed简明教程Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《sed简明教程Word格式文档下载.docx(19页珍藏版)》请在冰豆网上搜索。
mydog'
snameisfrank
Thisismyfish
myfish'
snameisgeorge
Thisismygoat
mygoat'
snameisadam
把其中的my字符串替换成HaoChen’s,下面的语句应该很好理解(s表示替换命令,/my/表示匹配my,/HaoChen’s/表示把匹配替换成HaoChen’s,/g表示一行上的替换所有的匹配):
sed
"
s/my/Hao
Chen'
s/g"
ThisisHaoChen'
s
HaoChen'
scat'
snameis
betty
sdog
sdog'
frank
sfish
sfish'
george
sgoat
sgoat'
adam
注意:
如果你要使用单引号,那么你没办法通过\’这样来转义,就有双引号就可以了,在双引号内可以用\”来转义。
再注意:
上面的sed并没有对文件的内容改变,只是把处理过后的内容输出,如果你要写回文件,你可以使用重定向,如:
pets.txt>
hao_pets.txt
或使用-i参数直接修改文件内容:
-i
在每一行最前面加点东西:
'
s/^/#/g'
#Thisismycat
#
mycat'
#Thisismydog
mydog'
#Thisismyfish
myfish'
#Thisismygoat
mygoat'
在每一行最后面加点东西:
s/$/---
/g'
---
---
Thisismydog---
snameisfrank---
Thisismyfish---
snameisgeorge---
Thisismygoat---
snameisadam---
顺手介绍一下正则表达式的一些最基本的东西:
^表示一行的开头。
如:
/^#/以#开头的匹配。
$表示一行的结尾。
/}$/以}结尾的匹配。
\<
表示词首。
如
abc表示以abc为首的詞。
\>
表示词尾。
如abc\>
表示以abc結尾的詞。
.表示任何单个字符。
*表示某个字符出现了0次或多次。
[]字符集合。
如:
[abc]表示匹配a或b或c,还有[a-zA-Z]表示匹配所有的26个字符。
如果其中有^表示反,如[^a]表示非a的字符
正规则表达式是一些很牛的事,比如我们要去掉某html中的tags:
html.txt
1
<
b>
This<
/b>
iswhat
<
span
style="
text-decoration:
underline;
>
I<
/span>
meant.
Understand?
看看我们的sed命令
#如果你这样搞的话,就会有问题
s/<
.*>
//g'
html.txt
Understand?
#要解决上面的那个问题,就得像下面这样。
#其中的'
[^>
]'
指定了除了>
的字符重复0次或多次。
]*>
ThisiswhatImeant.Understand?
我们再来看看指定需要替换的内容:
3s/my/your/g"
Thisisyourdog
下面的命令只替换第3到第6行的文本。
3,6s/my/your/g"
yourdog'
sname
isfrank
Thisisyourfish
yourfish'
isgeorge
my.txt
cat,my
isbetty
Thisismydog,mydog'
Thisismyfish,myfish'
Thisismygoat,mygoat'
只替换每一行的第一个s:
s/s/S/1'
ThiSismy
ThiSismydog,mydog'
ThiSismyfish,myfish'
ThiSismygoat,mygoat'
只替换每一行的第二个s:
s/s/S/2'
ThisiSmy
ThisiSmydog,mydog'
ThisiSmyfish,myfish'
ThisiSmygoat,mygoat'
只替换第一行的第3个以后的s:
s/s/S/3g'
Sname
iSbetty
SnameiSfrank
ThisismyfiSh,myfiSh'
SnameiSgeorge
SnameiSadam
多个匹配
如果我们需要一次替换多个模式,可参看下面的示例:
(第一个模式把第一行到第三行的my替换成your,第二个则把第3行以后的This替换成了That)
1,3s/my/your/g;
3,$s/This/That/g'
Thisisyour
cat,your
s
nameisbetty
Thisisyourdog,yourdog'
Thatisyourfish,yourfish'
Thatismygoat,mygoat'
上面的命令等价于:
(注:
下面使用的是sed的-e命令行参数)
-e
1,3s/my/your/g'
3,$s/This/That/g'
我们可以使用&
来当做被匹配的变量,然后可以在基本左右加点东西。
如下所示:
s/my/[&
]/g'
Thisis[my]
cat,[my]
Thisis[my]dog,[my]dog'
Thisis[my]fish,[my]fish'
Thisis[my]goat,[my]goat'
圆括号匹配
使用圆括号匹配的示例:
(圆括号括起来的正则表达式所匹配的字符串会可以当成变量来使用,sed中使用的是\1,\2…)
s/Thisismy
\([^,]*\),.*is\(.*\)/\1:
\2/g'
cat:
betty
dog:
frank
fish:
george
goat:
adam
上面这个例子中的正则表达式有点复杂,解开如下(去掉转义字符):
正则为:
Thisismy([^,]*),.*is(.*)
匹配为:
Thisismy(cat),……….is(betty)
然后:
\1就是cat,\2就是betty
sed的命令
让我们回到最一开始的例子pets.txt,让我们来看几个命令:
N命令
先来看N命令——把下一行的内容纳入当成缓冲区做匹配。
下面的的示例会把原文本中的偶数行纳入奇数行匹配,而s只匹配并替换一次,所以,就成了下面的结果:
N;
s/my/your/'
Thisisyourgoat
也就是说,原来的文件成了:
cat\n
my
Thisismy
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- sed 简明 教程