技术改变生活

博客园 首页 新随笔 联系 订阅 管理

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

posted on 2020-01-26 20:07  小阿峰  阅读(241)  评论(0编辑  收藏  举报