-
初识sed
正则
^
匹配紧接的正则表达式,在行或字符串的起始处$
匹配前面的正则表达式,在字符串的末尾活着行的结束。sed 's/:.*//' /etc/passwd | sort -u #删除第一个冒号之后的所有东西,并排序列表删除重复部分 find /home/tolstoy -type d -print # 打印此目录下的文件列表 sed 's;/home/tolstoy/;/home/lt/;' # 替换文件路径 sed 's/^/mkdir /' # sed添加mkdir sh -x # shell执行
-
sed替换细节
除了斜杠之外还可以使用其他符号来作为定界符
sed 's/\/home\/tolstoy\//\/home\/lt\//' # 若只能使用 ‘/’ 作为定界符的时候 会导致命令不易读 sed 's;/home/tolstoy/;/home/lt/;' # 替换文件路径 用 ‘;’ 作为定界符 命令变得清晰
在sed中
&
用于匹配“从此点开始替代成匹配与整个正则表达式的整个文本sed 's/ata/&, the capital of the south/' myfile.txt
在sed中, s命令里以
g
结尾表示全局替换 不然只会替代匹配到的第一个sed 's/toy/weapon/g' myfile.txt # 全局替换 sed 's/toy/weapon/' myfile.txt # 单独替换
通过管道可以将sed实体串联起来 ,
-e
选项sed -e 's/foo/bar/g' -e 's/chicken/cow/g' myfile.txt # 第一种 cat > fixup.sed s/foo/bar/g s/chicken/cow/g s/china/america/g myfile.txt crtl+D sed -f fixup.sed myfile.txt # 第二种 sed -f fixup.sed -e 's/man/women/g' myfile.txt # 第三种
-
匹配特定行
,
范围表达式!
否定正则表达式sed -n '/<HTML>/p' *.html # 打印含有html标签的行 sed -n '10,40p' foo.txt # 用‘,’ 表示行范围 sed '/foo/,/bar/ s/baz/quux/g' foo.xml # 在已foo开始,bar结束的行中进行替换 sed /used/ !s/new/used/g # 将没有used行中的new替换为used
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。