首页 > 代码库 > 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编程中的四剑客