一、sed命令
语法:
sed [OPTION]... {script-only-if-no-other-script} [input-file]...
sed命令详解:
选项与参数:-n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。-e :直接在命令列模式上进行 sed 的动作编辑;-f :直接将 sed 的动作写在一个文件内, -f filename 则可以运行 filename 内的 sed 动作;-r :sed 的动作支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法)-i :直接修改读取的文件内容,而不是输出到终端。动作说明: [n1[,n2]]functionn1, n2 :不见得会存在,一般代表『选择进行动作的行数』,举例来说,如果我的动作是需要在 10 到 20 行之间进行的,则[10,20[动作行为]]function:a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);p :列印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!
示例:
sed '2,5d' #删除第2-5行,使用nl命令可以查看文件的行号sed '2d' #删除第二行sed '3,$d' #删除第三至最后一行sed '2a drink tea' #在第二行后(亦即是加在第三行)加上『drink tea』字样!sed '2i drink tea' #在第二行前加上『drink tea』字样!sed '2a Drink tea or ......\ #增加两行以上,在第二行后面加入两行字,例如『Drink tea or .....』与『drink beer?』。每一行的最后加上\表示输入没有结束,并且换行了。sed '2,5c No 2-5 number' #第2-5行的内容取代成为『No 2-5 number』sed -n '5,7p' #列出 /etc/passwd 文件内的第 5-7 行
来源:http://www.jb51.net/LINUXjishu/144593.html
二、linux中{}和()执行命令的方式
1.{ }形式
{ echo "User report for `date`.";who; } | pr #pr:convert text files for printing
应该注意的:左括号“{”后面应有一个空格;右括号“}”之前应有一个分号(;)。
花括号也可以包含若干单独占一行的命令:
{ echo "User report for `date`."
echo "There are `who|wc -l` users logged in."
who|sort; } | pr
花括号中的命令表必须用分号或者换行符终止。
2.( )形式
(echo "User report for `date`.";who) | pr
如上所示,在用圆括号括起成组命令时,左括号后不必有空格,右括号之前也不需加上分号。
两者的区别:用花括号括起来的成组命令只是在本shell内执行命令表,不产生新的进程;而用圆括号括起来的成组命令式在新的子shell内执行,要建立新的子进程,不会改变父shell的变量值及工作目录。
--------------------