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