您的位置:首页 > 运维架构 > Shell

shell脚本常用语句用法笔记

2018-03-28 09:33 330 查看
脚本基本语句用法笔记

grep

-i 查询时不区分大小写

-n打印匹配的行号

-v 打印不匹配的行

-AX包括每次匹配之后X行

-BX包括每次匹配之后X行

cat /etc/passwd |grep student (-i 表示不关心大小写)

正则表达式中 ^代表开始 $代表结束
cat /etc/passwd|grep  ^#  -v     (去掉以#作为起始的行)
cat /etc/passwd|grep  ^$  -v     (去掉空行)


-E增强符号的使用

cat inittab |grep -Ev  ‘(^#|^$)’  等价于   cat inittab |grep -Ev ‘^(#|$)’


文件处理后重新保存错误示范:

cat inittab |grep -Ev ‘^(#|$)’ >inittab  这样会得到一个空文件。


解决办法:

cat inittab |grep -Ev ‘^(#|$)’ >inittab.tmp ;cat ./inittab.tmp > inittab;rm -f ./inittab.tmp


sed

sed  ‘s/ search /  replace / ’   或者 ‘s#    #    # ’ 或者 ‘s@    @    @’
echo “/usr/local” |sed ‘s@/usr@/var@’
cat ./iptables.list | sed ‘s/172.24./10.0./’  重新cat ./iptables.list后发现内容并没有发生改变再次印证了sed只是改变的流


sed 的搜索默认是在一行里找到第一个符合条件的信息就停止搜索行内剩余的信息。过想继续搜索行内的其他符合条件的信息需要添加g形成



s/  /   /g’ 的形式   ‘s/  /   /i’可以忽略大小写
cat ./iptables.list | sed ‘1,50s/172.24./10.0./’  1到50行中的进行替换
cat animal.txt |sed ‘/cat/,/dog/s/$/<---------/’传说中的猫鼠游戏可以实现模糊行的匹配


遇到cat开始dog结束 在这些符合的行中在结尾添加<—————

如果没有遇到dog那就一直执行一直到最后

sed的删除操作 cat iptables.list |sed ‘/^#/d’ 形式就是如此

要实现将#开始的 或者空行都删掉

cat iptables.list |sed ‘/^#/d’ |sed ‘/^$/d’
cat iptables.list |sed  -e  ‘/^#/d’ -e  ‘/^$/d’


wc对行数的统计

cat /etc/passwd |wc

37 63 1737

出现有37行 63个word 1737个字符(character)

cat /etc/passwd |wc -w

63

cat /etc/passwd |wc -l

37

cat /etc/passwd |wc -c

1737

cat /etc/passwd |grep -i studenttt |wc -l 用该命令的输出数值来判断是否存在,cat命令在不存在符合要求的时候,是不会输出信息的,故而不能做判断用。

awk

awk’ /匹配字符串/’文件名 匹配字符串可以用正则表达式来表示

awk ‘/root/’ /etc/passwd 等价于 grep root /etc/passwd

awk ‘{处理动作}’文件名

awk -F:’{print 113}’ /etc/passwd

awk ‘/匹配字符串/ {处理动作}’文件名

awk -F:’/root/{print 1,1,3}’ /etc/passwd

awk ‘{print 1,1,3}’ ~/names 可以找出第一列和第三列的内容

awk ‘{print 1,1,3}’ ~/names 该表达式中逗号表示一个空格的分隔符

如果该表达式中逗号用空格代替,效果等价于awk ‘{printf 113}’

~/names  仅仅把第1,3列拼接在一起。
print函数将变量和字符夹杂着输出,如同linux中的echo命令
shell>date
Wed Feb 24 10:22:28 CST 2010
shell> date|gawk’{print “Month:”$2”\nYear:”,$6}’
Month:Feb
Year:2010


最近在读一个脚本,先把里面这些晦涩的脚本用法摘出来,磨刀不误砍柴工。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  shell