【Linux】必掌握的六大命令:awk、sed、grep、find、cut、split 及文本文件查找并替换实战操作

一、六大命令:

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`;
  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值