Linux常用知识点整理

一、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]]function
n1, 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的变量值及工作目录。


 --------------------

你可能感兴趣的:(Linux常用知识点整理)