sed学习:
sed全名叫stream editor,流编辑器,用程序的方式来编辑文本,相当的hacker啊。sed基本上就是玩正则模式匹配,所以,玩sed的人,正则表达式一般都比较强。
$sed"s/my/Hao Chen's/g"pets.txt
g表示一行中的所有匹配
$sed"s/my/Hao Chen's/g"pets.txt > hao_pets.txt
或者-i重定向回原来的文件中
^ 表示一行的开头。如:/^#/ 以#开头的匹配。
$ 表示一行的结尾。如:/}$/ 以}结尾的匹配。
\< 表示词首。 如 \<abc 表示以 abc 为首的詞。
\> 表示词尾。 如 abc\> 表示以 abc 結尾的詞。
. 表示任何单个字符。
* 表示某个字符出现了0次或多次。
[ ] 字符集合。 如:[abc]表示匹配a或b或c,还有[a-zA-Z]表示匹配所有的26个字符。如果其中有^表示反,如[^a]表示非a的字符
zhangxin@nimei:~/bashDir$ sed "3,6s/zhangxin/my/g" pets.txt
This is zhangxin's cat
zhangxin's cat's name is betty
This is my's dog
my's dog's name is frank
This is my's fish
my's fish's name is george
This is zhangxin's goat
zhangxin's goat's name is adam
替换3到6行的内容
$sed's/s/S/1'my.txt
只替换每一行的第一个s
$sed's/s/S/3g'my.txt
替换每一行第3个以后的s
多模式匹配:
$sed'1,3s/my/your/g; 3,$s/This/That/g'my.txt
&可以替代要被匹配的变量
$sed's/my/[&]/g'my.txt
sed下的命令:
先来看N命令 —— 把下一行的内容纳入当成缓冲区做匹配。
sed "N;s/zhangxin/zhang/" filepath
此中会先将偶数行的内容放在奇数行中,而上述的正则表达式中并不全部匹配,所以偶数行中的相应内容不会被替换掉。
a和i命令:均为添加行,其中na表示在第n行之后追加一行,ni表示在第n行前面增加一行,也可以在匹配行后面使用a或者i,如下:
sed "s/zhang/a -----------" filename
sed "s/zhang/i -----" filename
c命令:替换匹配行
sed "s/zhangxin/c replace string" filename
d命令:删除匹配行
sed "s/zhangxin/d" filename
sed全名叫stream editor,流编辑器,用程序的方式来编辑文本,相当的hacker啊。sed基本上就是玩正则模式匹配,所以,玩sed的人,正则表达式一般都比较强。
$sed"s/my/Hao Chen's/g"pets.txt
g表示一行中的所有匹配
$sed"s/my/Hao Chen's/g"pets.txt > hao_pets.txt
或者-i重定向回原来的文件中
^ 表示一行的开头。如:/^#/ 以#开头的匹配。
$ 表示一行的结尾。如:/}$/ 以}结尾的匹配。
\< 表示词首。 如 \<abc 表示以 abc 为首的詞。
\> 表示词尾。 如 abc\> 表示以 abc 結尾的詞。
. 表示任何单个字符。
* 表示某个字符出现了0次或多次。
[ ] 字符集合。 如:[abc]表示匹配a或b或c,还有[a-zA-Z]表示匹配所有的26个字符。如果其中有^表示反,如[^a]表示非a的字符
zhangxin@nimei:~/bashDir$ sed "3,6s/zhangxin/my/g" pets.txt
This is zhangxin's cat
zhangxin's cat's name is betty
This is my's dog
my's dog's name is frank
This is my's fish
my's fish's name is george
This is zhangxin's goat
zhangxin's goat's name is adam
替换3到6行的内容
$sed's/s/S/1'my.txt
只替换每一行的第一个s
$sed's/s/S/3g'my.txt
替换每一行第3个以后的s
多模式匹配:
$sed'1,3s/my/your/g; 3,$s/This/That/g'my.txt
&可以替代要被匹配的变量
$sed's/my/[&]/g'my.txt
sed下的命令:
先来看N命令 —— 把下一行的内容纳入当成缓冲区做匹配。
sed "N;s/zhangxin/zhang/" filepath
此中会先将偶数行的内容放在奇数行中,而上述的正则表达式中并不全部匹配,所以偶数行中的相应内容不会被替换掉。
a和i命令:均为添加行,其中na表示在第n行之后追加一行,ni表示在第n行前面增加一行,也可以在匹配行后面使用a或者i,如下:
sed "s/zhang/a -----------" filename
sed "s/zhang/i -----" filename
c命令:替换匹配行
sed "s/zhangxin/c replace string" filename
d命令:删除匹配行
sed "s/zhangxin/d" filename