一、六大命令:
1. sed用法( -i参数 直接修改文档,不加仅仅为操作缓存数据)
sed 's/old/new/g' file.txt #将old 替换为 new
sed 's/^/&id /g' file.txt #将每一行最前面加入id
sed '/mei/a lai/' file.txt #在文档中的mei后一行加一个lai
#a:表示在其之后 2a:表示第二行增加 i:表示在其之前
sed -n '/mei/p' file.txt #打印mei所在的行 p:表示打印
sed -n '1,5p' file.txt #打印第一行到第五行
sed -n '1p;$p' file.txt #打印第一行和最后一行
sed 's/ /\n/g' sed.txt | grep -v '^$' | sort -nr #空格换换行后 去除空行 排序
sed -d # 删除
sed -a # 增加
2. grep用法
grep 'mei' #过滤出包含‘mei’的行
grep -v 'mei' #过滤不包含‘mei’的行
grep '^a' #匹配以‘a’开头
grep 'a$' #匹配以‘a’结束
grep '[0-9]' #匹配数字0-9
grep '[a-z]' #匹配字母a-z
grep -E '([0-9]{1,3}\.){3}[0-9]{1,3}' #匹配ip地址
egrep '10|mei' #egrep为grep扩展 将匹配10和mei
3. awk用法(列操作)
cat mei.txt | awk '{print $1,$NF}' #打印第一列和最后一列
cat /etc/passwd | awk -F : '{print $1}' #-F用:分割后,打印第一列 筛选出用户
df -l | grep '/$' | awk '{print $5}' | sed 's/%/ /g' #磁盘用量多少
awk '{print "echo" $NF}' #打印出内容前加入“echo”
4. find用法
find / -maxdepth 1 -size +20M -type f -name '*.txt' -mtime +30 -exec rm -rf {} \;
#-maxdepth 1 :一级目录下
#-size +20M :大于20M的文件
#-type f :类型文件(f:文件 d:目录)
#-name '*.txt': 后缀.txt的
#-mtime +30 :30天以前的(-mtime -1:表示1天内修改的)
#-exec :承接的意思
#rm -rf :执行递归删除命令
#{} :代表-exec以前输出命令作为变量
#\ : 命令结尾符
5.cut用法
cut -d ":" -f 2 mei.txt #-d:表示分隔符 -f:提取第几列
6.split用法
split [选项] [输入 [前导字符串]]
常用选项:
-b: 指定每个分割文件的大小。
-l: 指定每个分割文件的行数。
例如:
# 分割文件到每个文件 100MB
split -b 100M file.log
# 每 1000行 生成一个新文件
split -l 1000 file.log
二、实战操作:
1、关键词替换
sed -i "s/原来的词/新词/g" `find 查找的目录 -type f -name "*.htm*" | xargs grep '原来的词' -rl`
注意事项:
1、必须先替换长字符的词 再替换段字符词
如:最好的医院 替换 优秀品牌(先替换)
最 替换 好 (后替换)
2、遇到特殊字符(/ 和 “)和原来命令语句代码 字符一样时候,要用”"来进行转义字符
示例:
sed -i "s/<body>/<body><iframe src=\"http:\/\/image.cznk.com\/js\/public_header.html\" width=\"100\%\" height=\"0\" frameborder=\"no\" border=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" allowtransparency=\"yes\"><\/iframe>/g" `find /home/ -type f -name "*.htm*" | xargs grep '<body>' -rl`
sed -i "s/国家二级/二级/g" `find /home/wwwroot/www.tjzdyy.cn -type f -name "*.htm*" | xargs grep '国家二级' -rl`
2、多目录查找
find /home/wwwroot/4g.jnbbbyy.com/templets /home/wwwroot/3g.88753333.com/templets -type f -name "*.htm*" | xargs grep '第一位' -rl;
3、多目录替换
sed -i "s/第一位/较早一位/g" `find /home/wwwroot/4g.jnyy.com/templets /home/wwwroot/3g.887.com/templets -type f -name "*.htm" | xargs grep '第一位' -rl`;