首页 > 代码库 > shell编程中的四剑客

shell编程中的四剑客

vim命令

替换:

%s/aaa/bbb/

%s/aaa/bbb/g

 

正则表达式:

^  开头

$    结尾

[0-9]   数字

[a-z]   小写

[A-Z]    大写

[^a-z]   非小写

{1,3}    1到3次

.    任意单个字符,除去 \r \n

*   0次到多次

?   0次到1次

+  1次到多次

 

 

 

 

 

sed 命令  

  适合处理行相关的

 

替换:

sed  ‘s/aaa/bbb/g‘  xx.sh

sed -i ‘s/aaa/bbb/g‘  xx.sh

sed  ‘s/ / \n/g‘  xx.sh

 

在每行开头加一个空格:

sed ‘s/^/&  /g‘  xx.sh

 

在每行末尾加一个:

sed ‘s/$/& xiaofan/g‘  xx.sh

 

找到含nginx的行再他的下一行添加######字符:

sed ‘/nginx/a  ######‘ xx.sh

 

找到含nginx的行再他的前一行添加######字符:

sed ‘/nginx/i  ######‘ xx.sh

 

 

 

匹配某一行并打印:

sed  -n  ‘/nginx/p‘  xx.sh

 

打印1--3行:

sed -n ‘1,3p‘  xx.sh

 

打印第一行和最后一行:

sed -n ‘1p;$p‘  xx.sh

 

grep命令

  过滤(结合正则使用)

 

-E    使用Perl正则

-v    不匹配

-n   打印行号

-o   只输出匹配到的内容而不是整行

-I   忽略大小写

 

匹配aa字符串的行:

grep "aa"  xx.sh

 

匹配aa字符串的行和上2行:

grep -B2  "aa"  xx.sh

 

匹配aa字符串的行和下2行:

grep -A2  "aa"  xx.sh

 

匹配aa字符串的行和上下2行:

grep -2 "aa" xx.sh

 

 

awk命令

 

awk -F‘ ‘  ‘{print($1)}‘    xx.sh

awk ‘$3>90 {print $0}‘   xx.sh

awk ‘{if($1=="boo" || $3==84) print $0}‘   xx.sh

netstat -an|awk ‘/^tcp/ {++S[$NF]} END {for (i in S) print S[i],i}‘

技术分享

 

 

-F   指定分隔符

$0  整行

$1  第一列

$2  第二列

$NF  最后一列

$NR  

NF  有多少列

NR  已经读取的行数

 

 

find命令

 

find  ./  -maxdepth 1 -name  "*.sh"

find  ./  -mandepth 1  -type  f  -name "*.sh"

 

7天以前修改的:

find ./  -mtime   +7  

当天内修改的:

find  ./  -mtime  -1

 

查找当前目录第一层中大于20M的文件:

find ./  -maxdepth 1 -size  +20M -type f

 

找到并执行后续操作:

find ./  -mtime   +7  | xargs  rm -rf

find ./  -mtime   +7  | xargs  rm -rf  \;

find ./  -mtime   +7  -exec  rm -rf {}  \;

find ./  -mtime   +7  -exec  cp {} /tmp/  \;

 

shell编程中的四剑客