sed实战、find实战、grep实战
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实战的更多相关文章
- (转)不看绝对后悔的Linux三剑客之grep实战精讲
不看绝对后悔的Linux三剑客之grep实战精讲 原文:http://blog.51cto.com/hujiangtao/1923675 https://www.cnblogs.com/peida/a ...
- 项目实战——企业级Zabbix监控实战(一)
项目实战--企业级Zabbix监控实战 实验一:Zabbix监控的搭建 1.实验准备 centos系统服务器3台. 一台作为监控服务器, 两台台作为被监控节点, 配置好yum源. 防火墙关闭. 各节点 ...
- Spark RDD/Core 编程 API入门系列 之rdd实战(rdd基本操作实战及transformation和action流程图)(源码)(三)
本博文的主要内容是: 1.rdd基本操作实战 2.transformation和action流程图 3.典型的transformation和action RDD有3种操作: 1. Trandform ...
- 整理grep实战文本搜索过滤技巧
一:grep的简介: 文本搜索工具,根据用户指定的文本模式对目标文件进行逐行搜索,显示能够被模式所匹配到的行.配合正则表达式的使用可以实现强大的文本处理.下面一一说明正则的例子. 二:文本处理工具分类 ...
- 深入浅出Hadoop Mahout数据挖掘实战(算法分析、项目实战、中文分词技术)
Mahout简介 Mahout 是 Apache Software Foundation(ASF) 旗下的一个开源项目, 提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建 ...
- kubernetes云平台管理实战: 故障自愈实战(四)
一.创建实验文件 [root@k8s-master ~]# cat myweb-rc.yml apiVersion: v1 kind: ReplicationController metadata: ...
- 深度学习之PyTorch实战(3)——实战手写数字识别
上一节,我们已经学会了基于PyTorch深度学习框架高效,快捷的搭建一个神经网络,并对模型进行训练和对参数进行优化的方法,接下来让我们牛刀小试,基于PyTorch框架使用神经网络来解决一个关于手写数字 ...
- 大数据开发实战:Hive优化实战3-大表join大表优化
5.大表join大表优化 如果Hive优化实战2中mapjoin中小表dim_seller很大呢?比如超过了1GB大小?这种就是大表join大表的问题.首先引入一个具体的问题场景,然后基于此介绍各自优 ...
- 大数据开发实战:Hive优化实战2-大表join小表优化
4.大表join小表优化 和join相关的优化主要分为mapjoin可以解决的优化(即大表join小表)和mapjoin无法解决的优化(即大表join大表),前者相对容易解决,后者较难,比较麻烦. 首 ...
随机推荐
- 《零基础入门学习Python》【第一版】视频课后答案第001讲
测试题答案: 0. Python 是什么类型的语言? Python是脚本语言 脚本语言(Scripting language)是电脑编程语言,因此也能让开发者藉以编写出让电脑听命行事的程序.以简单的方 ...
- 用Python手把手教你搭建一个web框架-flask微框架!
在之前的文章当中,小编已经教过大家怎么搭建一个Django框架,今天我们来探索另外的一种框架的搭建,这个框架就是web框架-flask微框架啦!首先我们带着以下的几个问题来阅读本文: 1.flask是 ...
- Python之路-时间模块
time模块 import time 时间戳(time.time())--结构化时间(time.localtime)--字符串时间(time.strftime) import time print(t ...
- JFinal 结合Dubbo发生的一些问题
1.java.lang.NoSuchMethodError: org.jboss.resteasy.specimpl.BuiltResponse.getHeaders()Ljavax/ws/rs/co ...
- console_init()分析
启动阶段初始化控制台流程分析, start_kernel console_init(); -->tty_ldisc_begin(); /* Setup the default TTY line ...
- NXP低功耗蓝牙集成芯片QN9080C的时钟配置
/*************************************************************************************************** ...
- The 2018 ACM-ICPC China JiangSu Provincial Programming Contest J. Set
Let's consider some math problems. JSZKC has a set A=A={1,2,...,N}. He defines a subset of A as 'Meo ...
- 回调深入理解 同步回调 以android中View.OnClickListener为列
现在来分析分析下Android View的点击方法onclick();我们知道onclick()是一个回调方法,当用户点击View就执行这个方法,我们用Button来举例好了 //这个是View的 ...
- JSP 页面 jstl 时间戳 long型转时间
转载http://www.cnblogs.com/gmq-sh/p/5528989.html
- 04-python进阶-map&reduce
Map --映射 Reduce -- 归纳 将大数据标准化的处理 Map 拆封任务,Reduce将结果合并 这样是不是能够将很多计算机组成一台超级计算机呢? 一些问题:如果任务本身就很复杂,那么拆解任 ...