1.find实战

# 删除指定文件(三种方法)
find /data/ -type f -name "*.log" -exec rm {} \;
find /data/ -type f -name "*.log" | xargs rm -f
rm -f `find /data/ -type f -name "*.log"` # 删除修改时间在30天之前的文件,+30:30天之前;30:第三十天;-30:最近30天
find /data/ -type f -name "*log" -mtime +30 | xargs rm -f # 查找/data目录下7天以前的,以log结尾的,大于1M的文件,移动到/tmp目录下
find /data/ -type f -name "*.log" -size +1M -mtime +7 -exec mv {} /tmp/ \; # 将某一目录下的所有目标文件,替换成指定内容,xargs的原理是将传过来的结果变成一行
find /data/ -type f -name "*.sh" | xargs sed -i "s#oldboy#oldgirl#g"
sed -i"s#oldgirl#oldboy#g" `find /data/ -type f -name "*.sh"` # -a:并集;-o:交集
find /data/ -type f -name "test.sh" -o -name "hehe.sh" # 删除当前目录下除了oldgirl.txt的所有文件
find . -type f ! -name oldgirl.txt | xargs \rm -f # 找出当前目录下的所有一级目录
find . -maxdepth 1 -type d ! -name "."
tree -d /data # 查看目录结构
tree -Ld 1 /data # 只看一级目录
# 这三个的inode是一样的,3指的是硬链接个数
ls -ldi /data/old/ /data/old/. /data/old/ett/..

2.grep实战

# grep限定单词边界
cat oldboy.txt
oldboy hello word
oldboy1 hello word
# 打印符合条件的行,-n显示行号
grep -n "oldboy" oldboy.txt
1:oldboy hello word
2:oldboy1 hello word # 只匹配有这个单词的行
grep -n "\boldboy\b" oldboy.txt
1:oldboy hello word
# -w参数是按单词搜索,只匹配有这个单词的行
grep -w "oldboy" oldboy.txt
oldboy hello word

3.-e多点编辑

# 一条sed命令,删除/etc/passwd第三行到末尾的数据,并把bash替换为blueshell
sed -e '3,$d' -e 's#bash#blueshell#' /etc/passwd
# 用-e参数显示一下结果,然后用-i直接去修改
sed -i '3,$d;s#bash#blueshell#' passwd.txt # 利用sed将hehe.txt内每一行结尾的.则换成!
sed -i 's#\.$#\!#g' hehe.txt
sed -r 's#!$#.#g' hehe.txt
# 利用 sed 直接在 hehe.txt 最后一行加入"# This is a test"
sed -i '$a # This is a test' hehe.txt

4.删除第三行到末尾的行,并且将10修改为01(四种方法)

cat person.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO 方法一:sed '3,$d' person.txt|sed 's#10#01#g'
方法二:sed -e '3,$d' -e 's#10#01#g' person.txt
方法三(此方法最常用):sed '3,$d;s#10#01#g' person.txt
方法四:sed -f person.sed person.txt
cat person.sed
3,$d
s#10#01#g

5.sed跟单引号、双引号的结合

cat test.txt
a
b
a x=a
y=b
# 一个文本test.txt有三行内容;然后赋值变量:x=a、y=b,对文本进行内容替换
sed s#$x#$y#g test.txt # 相当于
sed "s#$x#$y#g" test.txt
# 用单引号不行
sed 's#$x#$y#g' test.txt
# eval可以先解析变量
eval sed 's#$x#$y#g' test.txt

6.sed处理开机自启服务

# 基础正则遇到括号需要转义,-r表示扩展正则;
# grep -E参数相当于egrep,也是扩展正则的意思.
chkconfig --list | grep 3:on | egrep -v "crond|sshd|network|rsyslog|sysstat" |
awk '{print "chkconfig",$1,"off"}' | bash
chkconfig --list | grep "3:on"|grep -vE "sshd|crond|network|rsyslog|sysstat"|
awk '{print $1}'|sed -r 's#(^.*)#chkconfig \1 off#g'|bash

7.批量修改文件名

sed '1,3s#C#--&--#g' person.txt
# 此处的&就是C,即 & 就是两个##之间匹配到的内容
touch stu_102999_{1..5}_finished.jpg
ls *jpg | sed -r 's#(^.*)_finished.*#mv & \1.jpg#g' | bash
# rename命令挺强大
rename "_102999" "hehe" *jpg

8.awk、sed取IP地址

# ^.*dr:匹配的是--以任意字符开头,到dr:
# 两个空格B.*$,匹配到结尾,括号中的内容通过后向引用取到,即ip地址
ifconfig eth0 | sed -nr '/inet addr/s#^.*dr:(.*) B.*$#\1#gp'
ifconfig eth0 | awk -F "[ :]+" 'NR==2{print $4}' # 删除空行(awk只是打印了空行行号)
sed -i '/^$/d' oldboy.txt
awk '/^$/ {print NR}' oldboy.txt

9.如何取得一个文件的权限数字,如:644

ls -l a.txt | cut -c2-10 | tr "rwx-" "4210" | awk -F "" '{print $1+$2+$3$4+$5+$6$7+$8+$9}'
stat a.txt | sed -nr 's#^.*\(0(.*)/-.*$#\1#gp'
# awk的分隔符一般是要取的那个元素的前后两个
stat a.txt | awk -F "[0/]" 'NR==4 {print$2}'
stat -c %a a.txt

10.网站被攻击,所有文件都被加上了一行js,统一删除被加进去的内容

# 模拟环境
find . -type f | xargs sed -i '1 i <script>qweqweqwe</script>'
# 一条命令修改内容,另一种方法:用备份去还原
find . -type f | xargs sed -ir 's#<script>.*</script>##g'
# -n:不换行
echo -n "oldboy";echo "oldboy"
# -e:支持转义
echo -ne "oldboy\t";echo "oldboy"

sed实战、find实战、grep实战的更多相关文章

  1. (转)不看绝对后悔的Linux三剑客之grep实战精讲

    不看绝对后悔的Linux三剑客之grep实战精讲 原文:http://blog.51cto.com/hujiangtao/1923675 https://www.cnblogs.com/peida/a ...

  2. 项目实战——企业级Zabbix监控实战(一)

    项目实战--企业级Zabbix监控实战 实验一:Zabbix监控的搭建 1.实验准备 centos系统服务器3台. 一台作为监控服务器, 两台台作为被监控节点, 配置好yum源. 防火墙关闭. 各节点 ...

  3. Spark RDD/Core 编程 API入门系列 之rdd实战(rdd基本操作实战及transformation和action流程图)(源码)(三)

    本博文的主要内容是: 1.rdd基本操作实战 2.transformation和action流程图 3.典型的transformation和action RDD有3种操作: 1.  Trandform ...

  4. 整理grep实战文本搜索过滤技巧

    一:grep的简介: 文本搜索工具,根据用户指定的文本模式对目标文件进行逐行搜索,显示能够被模式所匹配到的行.配合正则表达式的使用可以实现强大的文本处理.下面一一说明正则的例子. 二:文本处理工具分类 ...

  5. 深入浅出Hadoop Mahout数据挖掘实战(算法分析、项目实战、中文分词技术)

    Mahout简介 Mahout 是 Apache Software Foundation(ASF) 旗下的一个开源项目, 提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建 ...

  6. kubernetes云平台管理实战: 故障自愈实战(四)

    一.创建实验文件 [root@k8s-master ~]# cat myweb-rc.yml apiVersion: v1 kind: ReplicationController metadata: ...

  7. 深度学习之PyTorch实战(3)——实战手写数字识别

    上一节,我们已经学会了基于PyTorch深度学习框架高效,快捷的搭建一个神经网络,并对模型进行训练和对参数进行优化的方法,接下来让我们牛刀小试,基于PyTorch框架使用神经网络来解决一个关于手写数字 ...

  8. 大数据开发实战:Hive优化实战3-大表join大表优化

    5.大表join大表优化 如果Hive优化实战2中mapjoin中小表dim_seller很大呢?比如超过了1GB大小?这种就是大表join大表的问题.首先引入一个具体的问题场景,然后基于此介绍各自优 ...

  9. 大数据开发实战:Hive优化实战2-大表join小表优化

    4.大表join小表优化 和join相关的优化主要分为mapjoin可以解决的优化(即大表join小表)和mapjoin无法解决的优化(即大表join大表),前者相对容易解决,后者较难,比较麻烦. 首 ...

随机推荐

  1. Python之路--序列化

    序列化的目的 1.以某种存储形式使自定义对象持久化 2.将对象从一个地方传递到另一个地方 3.使程序更具有维护性 json json多语言通用 四个功能:dumps.dump.loads.load # ...

  2. nrf51822微信开发入门学习笔记1:开始前的准备

    参考:(id:love--baby)https://blog.csdn.net/hunhun1122/article/details/68922493 微信硬件平台:https://iot.weixi ...

  3. LeetCode(289)Game of Life

    题目 According to the Wikipedia's article: "The Game of Life, also known simply as Life, is a cel ...

  4. Wannafly挑战赛21 机器人

    从前在月球上有一个机器人.月球可以看作一个 n*m 的网格图,每个格子有三种可能:空地,障碍,机器人(有且仅有一个),现在地面指挥中心想让机器人在月球上行走,每次可以发送一个指令,为 U-往上走.D- ...

  5. xml编辑无提示?这么破!

    在学习testng这个单元测试框架时,如果咱们碰到了编辑测试套件xml,不提示的情况(有提示方便咱们学习,并且testng的测试套件定义必须按照他的dtd文件约束来),咱们可以按照下面的步骤去解决这个 ...

  6. python 学习分享-文件操作篇

    文件操作 f_open=open('*.txt','r')#以只读的方式(r)打开*.txt文件(需要与py文件在同一目录下,如果不同目录,需写全路径) f_open.close()#关闭文件 打开文 ...

  7. 使用PHPExcel单元格样式添加不上的原因

    按照文档上的样式设置方法设置样式,一直不成功.后来发现是得要在创建了sheet,并选择某一个sheet作为活动sheet后再设置才可以.这里记录一下.

  8. POJ 2353 Ministry

    Ministry Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4220   Accepted: 1348   Specia ...

  9. ThinkPHP5杂技(一)

    Thinkphp5 assign 传递 " 时 ,前台收到的是 " 和ThinkPHP3.2不一样,3.2收到的是 ”,传递给js时 用的data.replace(new RegE ...

  10. 动态方式破解apk进阶篇(IDA调试so源码)

    动态方式破解apk进阶篇(IDA调试so源码) 来源 https://blog.csdn.net/qq_21051503/article/details/74907449 下面就说关于在IDA中And ...