当前位置: 首页 > news >正文

linux基础随心记三-四剑客

一、正则表达式

1、特殊符号

引号
单引号内容原封不动的输出
双引号会解析一些特殊符号,但对于{}(通配符)没有解析
不加引号和双引号类似,额外支持通配符 *.log {1…10}
反引号优先执行反引号内的命令
重定向
>标准正确输出,先清空后写入
>>追加
2>标准错误输出
2>&1 &>xxx.logecho xkm >>xkm.log 2>&1
echo xkm &>>xkm.log
<标准输入
<<cat xxx.txt <<EOF
xxxx
EOF
通配符用于批量处理文件
*所有
{}输出序列
[]
?任意一个字符

2、正则表达式

配合三剑客使用正则对字符进行过滤
正则表达式在线测试

基础正则
^xxx以xxx开头
xxx$以xxx结尾 cat -A 显示文件中隐藏的特殊符号
^$空行
.任意一个字符
\转义字符 ‘\.$’ 以.结尾
x*前一个字符连续出现0次或0次以上
.*所有
[]匹配任意一个字符 [abc] a或者b或者c
不需要转义,与+搭配较多
[^]取反 [^abc] 匹配任意一个字母,除了abc
扩展正则egrep 或 grep -E
sed -r
awk默认支持
+前一个字符连续出现1次或1次以上
[0-9]+ 取出所有的数字
[a-Z]+ 取出所有的单词
|或者
()表示一个整体
或在sed中实现后向引用(反向引用sed)
{}a{n,m} 前一个字符连续出现至少n次,最多m次
a{n} 前一个字符连续出现n次
a{n,} 前一个字符连续出现至少n次
a{,m}前一个字符连续出现最多m次
前一个字符出现0次或1次
perl正则grep -P
\d[0-9]
\s匹配的空字符 空格 tab \ \t \r \n \f
\w[0-9a-zA-Z_]
\D[^0-9]
\s非空字符
\W[^0-9a-zA-Z_]

二、gerp

  • 擅长过滤,过滤速度最快,会把匹配到的行显示出来
选项说明
-n显示行号
-i不区分大小写
-v排除
# 显示/etc/下面一层中以.conf结尾的文件ls/etc/|grep'\.conf$'find/etc/-maxdepth1-typef-name'*.conf'# 使用grep取出/etc/passwd第一列的数据egrep-o'^[^:]+'/etc/passwd

三、sed

  • 擅长取行,过滤,增删查改(替换修改文件内容)
  • 后向引用(截取)
-n取消默认输出,有p输出时要加上-n,不然会全部输出
-r支持扩展正则
-i修改文件内容,这个选项要放在最后
-i.bak先进行备份,然后修改文件内容,这个选项要放在最后

1、查找

  • 精确查找 类似于grep的过滤,但是可以指定行号
  • 模糊查找
# 取出文件的第三行sed-n'3p'/etc/passwd# 取出文件的第2到5行sed-n'2,5p'/etc/passwd# 取出文件的第2行和第5行sed-n'2p;5p'/etc/passwd# 取出文件的最后一行sed-n'$p'/etc/passwd# 过滤出包含root的行sed-n'/root/p'/etc/passwd# 获取范围内的日志sed-n'/11:00:00/,/24:00:00/p'/var/text.log

2、替换

格式: sed ‘s#找谁#替换成什么#g’ 文件名 输出文件内容
sed -i ‘s#找谁#替换成什么#g’ 文件名 修改文件内容
s:substitute 替换
g:global 全局替换,把一行中所有匹配到的内容都进行替换,否则只替换每一行第1个匹配到的内容

3、替换进阶-后向引用

适用于sed命令处理/提取一行中的某一部分,配合正则灵活取列

# \+数字 调用前面的组echo1234567|sed-r's#(1)(.*)(7)#\1<\2>\3#g'1<23456>7# 调换/etc/passwd第一列和最后一列的内容sed-r's#(^.*)(:x.*:)(.*$)#\3\2\1#g'/etc/passwdsed-r's#([a-zA-Z0-9_-]+)(.*:)(.*$)#\3\2\1#g'/etc/passwd# 提取网卡ipipa s eth0|sed-nr'3 s#(^[a-z]+ )(.*)(/.*)#\2#g p'

4、删除

d 删除以为单位
sed ‘3d’ xkm.log
删除空行或带#的行
sed -r ‘/^$|#/d’ xkm.log

5、增加

  • cai
    a:append 在指定行后面追加内容
    i:insert 在指定行上面插入一行
    c:replace 替换指定行的内容,取代

sed ‘3a xxx’ xkm.log

四、awk

是一个单行脚本
取行、取列、混合取行与列、统计功能、判断与循环、数组
擅长取列
‘条件{动作}’

1、取行

# 取出第一行awk'NR==1{print $0}'/etc/passwdawk'NR==1'/etc/passwd# NR Number of Record 记录号,行号# 取出第2到5行awk'NR>=2 && NR<=5'/etc/passwd# 过滤出包含root或nobody的行awk'/root|nobody/'/etc/passwd# 过滤出包含从root到nobody的行awk'/root/,/nobody/'/etc/passwd

2、取列

$数字 表示取列,$1第一列,$0表示这一行
$NF 最后一列 Number of Field
$(NF-1) 倒数第二列
column -t 对齐
-F 指定分隔符 -F:
$4 ~ /^[01]/ 第4列包含0或1开头( ~ 对某列进行过滤)

# 取出ls -lh的size列和最后一列ls-lh|awk'{print $5,$NF}'# 指定复杂分隔符取ipipa s eth0|awk-F'[ /]+''NR==3{print $3}'# 判断第三列大于1000,取出第一列,第三列和最后一列awk-F:'$3>1000{print $1,$3,$NF}'/etc/passwd# 过滤出/etc/passwd第4列的数字是以0或1开头的行,输出第一列,第三列awk-F:'$4 ~ /^[01]/ {print $1,$3}'/etc/passwd

3、统计与计算

  1. 类似wc -l
awk'{i++} END{print i}'/etc/passwd
  1. 进行累加求和
awk'{i=i+$1} END{print i}'/etc/passwd

五、find

擅长在指定目录中查找文件

选项说明
-type什么类型的文件 f表示文件 d表示目录
-name要查找的文件的名称
-size根据大小查找文件 +表示大于 -表示小于
-mtime根据修改时间查找文件,+ 或 - 表示在指定天数内或后
-user根据所属用户
-maxdepth指定深度,写在最前面
# 对查找到的每个文件执行指定的命令find/var/log/app-name'*.log'-matime+7-execrm-f{}\;# 将查找到的所有文件作为参数传递给指定的命令,而不是逐个执行find/var/log/app-name'*.log'-matime-7-exectarzcf /var/log/app.tar.gz{}+
http://www.jsqmd.com/news/905308/

相关文章:

  • 排队免单为什么能让商家愿意主动参与?拆开看是这个逻辑
  • 别再只盯着储能了!聊聊虚拟电厂(VPP)如何用‘调度算法’盘活你家屋顶的光伏和充电桩
  • Obsidian与AI知识管理
  • 3分钟掌握:PowerShell自动化部署Microsoft Office完整指南
  • 从0到1精通InternLM2.5-7B-Chat-1M:新手必看的5个核心功能与实用技巧
  • BsMax:让Blender变成你最熟悉的3D创作伙伴
  • 高管求职渠道服务商实测:专业度与资源力对比评测 - 得赢
  • 5分钟掌握猫抓:浏览器资源嗅探工具完全使用指南
  • ppf-contact-solver并行计算优化:如何利用多GPU加速大规模物理模拟
  • BMRetriever-7B-openmind安全与隐私考量:医疗数据处理的7个最佳实践
  • 基于Micro:bit与PIR传感器的运动检测报警系统制作全攻略
  • Arduino综合实验:电位器同步控制直流电机与RGB LED
  • C++:构造函数,析构函数详解
  • 无损音乐下载神器:Qobuz-DL完整使用指南
  • 观察Taotoken平台旗舰模型更新速度与API服务稳定性的个人体验
  • 2026国产水质五参数在线监测仪十大品牌深度评测与选型实战指南 - 仪表品牌榜
  • 3分钟掌握免费AI图片高清修复:让模糊照片秒变清晰的专业工具
  • ThinkPad风扇终极控制指南:TPFanCtrl2让你的笔记本告别噪音烦恼
  • Relight项目核心技术剖析:LoRA微调在图像重照明中的应用
  • 基于Arduino与MAX7219的LED点阵时钟:从SPI驱动到3D打印外壳全解析
  • NPU加速实战:如何在华为昇腾平台上快速运行h2ogpt-gm-oasst1-en-2048-falcon-7b-v3模型
  • ControlNet-OpenPose-SDXL-1.0最佳实践:优化提示词与参数设置的7个秘诀
  • 干枯发质必入:高保湿发膜推荐TOP10 - 速递信息
  • BsMax:3D艺术家从Max/Maya迁移到Blender的终极指南
  • 通讯录扩展(计科实验一改进)
  • 从‘看不懂’到‘门儿清’:手把手教你读懂Linux性能监控命令的输出(附真实案例)
  • QiLink 社区核心共建者证书
  • Arduino自动驾驶模拟电路:从传感器协同到系统集成的嵌入式实践
  • 【全平台通杀!】小白必看:Win/Mac/Linux 都能用的 OpenClaw 安装指南(包含安装包)
  • 【AI 时代软件工程师的算法图谱】05 二分查找:在不确定性中定位边界