xiaofeng666

linux中shell执行注意细节

语法:  bash  -n a.sh  #检测bash语法是否有错

bash -vx a.sh    #查看a.sh的执行过程,+代表已经执行的动作

 

grep命令的语法:  grep  [OPTIONS]  PATTERN  [FILE...]

例如:  

[root@a ~]# sed --help | grep \'-r\'
Usage: grep [OPTION]... PATTERN [FILE]...
Try \'grep --help\' for more information.
[root@a ~]# sed --help | grep \'\-r\'
-r, --regexp-extended
[root@a ~]#

grep ‘-r’     -r参数默认当作选项,没有pattern,使用\进行转义后变为pattern

 

sed 命令的语法: sed [OPTION]... {script-only-if-no-other-script} [input-file]...

sed   \' \'(模式空间,缓冲区)    file           ‘ ‘相当于屠宰加工厂,对文件进行处理工作

sed  \'s/Root/alice/gi\'  passwd    s///代表替换,g代表全局,i代表忽略大小写 

 

sed  -r   \'1~2d\'  passswd                    删除奇数行,从第一行开始,每隔2行删除      1、3、5、7、9、……

sed  -r  \'0~2d\'    passwd      删除偶数行,  2、4、6、8、……

 

sed  -r   \'/^Root/{n;s/bin/flash/gi}\'  passwd      #其中{}代表sed需要执行的命令有多个;i中的g表示全局,i表示忽略大小写;/^Root/代表匹配到的内容,支持正则表达式语法。

 

sed的暂存空间和模式空间理解

 

其中h、g代表覆盖;H、G代表追加;h表示将模式空间的内容放到暂存空间,g表示将暂存空间的内容放回模式空间。暂存空间默认为回车符。x代表交换暂存缓存区和模式空间。

sed   -r   ’1h;$G‘    passwd       #第一行覆盖到暂存空间;最后一行暂存空间追加到模式空间

sed   -r    \'1{h;d};$G\'    passwd     #第一行覆盖到暂存空间,然后删除第一行;最后一行暂存空间追加到模式空间

sed   -r    \'1h;2,$g\'     passwd      #第一行覆盖到暂存空间;第二行到最后一行从暂存空间覆盖到模式空间

sed   -r    \'4h;5x;$G\' passwd     #第四行覆盖到暂存空间;第五行模式空间和暂存空间互换,此时暂存空间为第五行;最后一行暂存空间追加到模式空间

 

sed的反向选择

sed -r    \'3d\' passwd    #代表删除第三行

sed    -r     \'3!d\' passwd   #代表除了第三行,删除其它行

 

sed多重编辑选项 -e

sed    -r    -e   \'1,3d\'   -e   \'s/Hema/yuhu/\'    filetext

sed    -r    \'1,3d;s/Hema/yuhu/\'   filetext

 

sed删除注释行和空行

sed   -r  \'^[ \t]*#;^[ \t]*$\'    filetext

sed   -r   \'^[ \t]*(#|$)\'    filetext

分类:

技术点:

相关文章: