linux grep-find-sed-awk 过滤查找修改文件

grep 过滤文本

# 返回文件中匹配正则的文本行
grep regex file 

# 返回文件中不匹配正则的文本行
grep -v regex file

# grep 搜索文件夹下的所有文件 
grep -r regex folder 

# grep 搜索文件夹下的所有文件,但只返回匹配的文件的文件名
grep -rl regex folder 

# 通过管道过滤其他程序的输出
ps -ef | grep 'mysql' 

find 查找文件

# 查找当前目录及其子目录下所有的 html 文件
find . -name '*.html' -type f 

# find 默认递归查找目录下所有的子目录,设置了 maxdepth 限制查找子目录的层级数
find . -maxdepth 1 -name '*.html' -type f 

# 查找当前目录及其子目录在 30 天之前创建的文件
find . -name '*.log' -ctime +30 

sed 替换文本

# sed -i 表示直接修改文本并保存,'s/find/replace/g' 表示全文替换
# 把当前目录下lishan.txt里的shan都替换为hua
sed -i "s/shan/hua/g" lishan.txt 

# 替换网址时注意转义特殊字符
sed -i "s#http://www\.baidu\.com?a=1&b=2#http://www.baidu.com?a=5\&b=6#g" 
# 替换命令一般用/分隔,若和替换文本冲突可使用其他分隔符如 # 或 |
# sed 的正则中 + 和 ? 要转义之后才表示正则意思,否则只表示字面值
# 替换的字符中若有 & 默认是表示匹配的字符串,要用字面值需要用 \& 进行转义

# 结合其他命令实现批量替换文本
sed -i 's/hao/yes/g' `grep hao ./ -rl`
# 或
sed -i 's/hao/yes/g' `find . -name '*.html' -type f`
# 或
find . -name '*.html' -type f | xargs sed -i 's/hao/yes/g'

awk 分隔文本

# 提取输入的第一个字段和第二个字段,然后将他们显示出来,字段之间插入一个空格
# awk 默认使用 1 个或多个 tab 或 空格作为分隔符
ll | awk '{print $1,$2}'

# 从文本文件获得输入
awk '{print $1,$2}' input.txt

# 指定分隔符
awk -F',' '{print $1,$2}' input.txt

# 分隔符可以用正则进行匹配
awk -F',[ \t]*' '{print $1,$2}' input.txt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值