Linux文件操作四剑客

news2024/9/24 11:23:08

目录

一、grep

(一)作用

(二)格式

(三)选项

(四)案例

1、查看/etc目录下所有包含bash的文件名:grep   -rl  bash   /etc

2、查看/var/log目录下所有包含error的文件名:grep  -rl   error  /var/log

(五)egrep(完美支持正则表达式)

(六)正则表达式

1、基础正则

2、扩展正则

(七)常见正则表达式

1、数字

2、字符串

3、Email

4、Url

5、IP

6、Tel

7、日期校验

二、find

(一)作用

(二)格式

(三)选项

1、-name            按照文件名查找

2、-size               按照文件大小查找

3、-type            按照文件类型查找

4、按照时间查找

5、按照文件归属查找

6、-perm           按照权限查找

7、-exec                用于在找到的每个文件上执行一个命令。

8、xargs命令用于从标准输入中读取字符串,并将其作为命令行参数传递给指定的命令。

      xargs命令可以同时处理多个文件,因此比使用-exec选项的方式效率更高。

9、当前目录及子目录下查找所有以.txt和.pdf结尾的文件

10、找出/home下不是以.txt结尾的文件

11、找出比file.log修改时间更长的所有文件

12、删除当前目录下所有.txt文件

三、sed

(一)语法

(二)选项

(三)操作

(四)案例

1、输出符合条件的文本:

2.删除符合条件的文本

3.替换符合条件的文本

4.迁移符合条件的文本

5.使用脚本编辑文件内容

6.以上修改想要直接修改文本源文件,只需要加入选项"-i"

四、awk

(一)语法

(二)选项

(三)内建变量

(四)案例

1、按行输出

2、按段输出

3、调用shell命令


一、grep

(一)作用

打印匹配指定字符串的行

(二)格式

grep  [选项]  [字符串]  文件名

(三)选项

1、-n            显示行号

2、-i            忽略大小写

3、-q            静默模式

4、-o            只显示查找的字符串

5、-v            反向匹配

6、^字符串    匹配以字符串开头的行

7、字符串$        匹配以字符串结尾的行

8、^$                匹配空行

9、-A #          查看所在行的后#行 

10、-B #          查看所在行的前#行

11、-C #          查看所在行的前后#行

12、-r                递归扫描指定目录下的每一个文件

13、-l                只显示匹配到指定关键字的文件名,而不是文件内容

(四)案例

1、查看/etc目录下所有包含bash的文件名:grep   -rl  bash   /etc

2、查看/var/log目录下所有包含error的文件名:grep  -rl   error  /var/log

(五)egrep(完美支持正则表达式)

(六)正则表达式

1、基础正则

①查找特定字符

命令:cat test.txt | grep -n 'was'

②利用[]查找集合字符

命令:cat test.txt | grep -n 'sh[io]rt'                 匹配i或者o

           cat test.txt | grep -n '[^w]'                     排除w,但以w开头的单词还会匹配到

           cat test.txt | grep -n '[a-h]oo'

           cat test.txt | grep -n '[0-9]'

③查找行首"^"与行尾"$"

命令:cat test.txt | grep -n '^[A-Z]'

           cat test.txt | grep '\.$'                 \为转义符

④查找任意一个字符"."与重复字符"*"

 命令:cat test.txt | grep -n 'w..d'                'w..d' 会匹配以 w 开始,以 d 结尾,中间有且仅有两个任意字符的字符串。

            cat test.txt | grep -n 'ooo*'                *表示前一个字符为0个或多个时满足条件

 在正则表达式中,  . 表示匹配除换行符之外的任何一个字符,而 .. 表示匹配任意两个字符

⑤查找连续的字符范围"{}",需要使用转义符,"\{\}"

命令:cat test.txt | grep -n 'o\{2\}'

           cat test.txt | grep -n 'wo\{2,5\}d'

            cat test.txt | grep -n 'wo\{2,\}d

\{n,m\} 表示匹配前面的字符至少出现 n 次,最多出现 m 次,其中 n 和 m 都是整数,可以省略不写

\{n\} 表示匹配前面的字符恰好出现 n 次

2、扩展正则

①+,重复一个或一个以上的前一个字符

命令:cat test.txt | grep -nE 'wo+d' 或者cat test.txt | egrep -n 'wo+d'

②?,零个或者一个前一个字符

命令:cat test.txt | egrep -n 'bes?t'

③|,使用或者的方式找出多个字符

命令:cat test.txt | egrep -n 'of|is|on'

④(),查找组字符串

命令:cat test.txt | egrep -n 't(a|e)st'

⑤()+,辨别多个重复的组

命令:cat test.txt | egrep -n 'A(xyz)+C'

(七)常见正则表达式

1、数字

①“^[0-9]*[1-9][0-9]*$”           //正整数 

②“^((-\d+)|(0+))$”                 //非正整数(负整数 + 0) 

③“^-[0-9]*[1-9][0-9]*$”         //负整数 

④“^-?\d+$”                          //整数

⑤“^\d+(\.\d+)?$”                 //非负浮点数(正浮点数 + 0) 

⑥“^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$”                 //正浮点数

⑦“^((-\d+(\.\d+)?)|(0+(\.0+)?))$”                 //非正浮点数(负浮点数 + 0)

⑧“^(-?\d+)(\.\d+)?$”                 //浮点数

2、字符串

①“^[A-Z]+$”                 //由26个英文字母的大写组成的字符串 

②“^[a-z]+$”                 //由26个英文字母的小写组成的字符串 

③“^[A-Za-z0-9]+$”         //由数字和26个英文字母组成的字符串 

④“^\w+$”                      //由数字、26个英文字母或者下划线组成的字符串

3、Email

①“^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$”         //email地址 

②“^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$”                                   //Email

4、Url

“^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$”                 //url

5、IP

“^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$”   //IP地址

6、Tel

/^((\+?[0-9]{2,4}\-[0-9]{3,4}\-)|([0-9]{3,4}\-))?([0-9]{7,8})(\-[0-9]+)?$/     //电话号码

7、日期校验

①   /^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/                   //  年-月-日    yyyy-MM-dd / yy-MM-dd 格式

②   "^[0-9]{4}-((0([1-9]{1}))|(1[1|2]))-(([0-2]([0-9]{1}))|(3[0|1]))$"                   // 年-月- 日  yyyy-MM-dd 格式

③  /^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/                   // 月/日/年

二、find

(一)作用

递归的在目录中查找文件

(二)格式

find  查找范围   选项   条件

(三)选项

1、-name            按照文件名查找

2、-size               按照文件大小查找

①+  数值        表示大于

②-  数值        表示小于

3、-type            按照文件类型查找

①f            普通文件

②s            套接字文件

③b            块设备文件

④c            字符设备文件

⑤p            管道文件

⑥l            链接文件

⑦d            目录

4、按照时间查找

①atime             文件访问时间

②mtime            文件内容修改时间

③ctime             文件状态修改时间

使用stat  文件名查看文件的时间戳

5、按照文件归属查找

①-user            按照属主查找

②-group            按照属组查找

6、-perm           按照权限查找

举例:find   /etc/       -perm    600

          find   /etc/    -user    root    -perm    600

7、-exec                用于在找到的每个文件上执行一个命令。

举例:find /var/spool/mail -type f -exec rm -rf {} \;

表示将在/var/spool/mail目录下查找所有类型为文件的对象,并删除它们,从而清空该目录

rm -rf {}表示要删除找到的文件或目录        {}表示当前查到的文件名        \;表示执行结束并退出

8、xargs命令用于从标准输入中读取字符串,并将其作为命令行参数传递给指定的命令。

      xargs命令可以同时处理多个文件,因此比使用-exec选项的方式效率更高。

举例:find /var/spool/mail -type  f | xargs rm -rf

将在/var/spool/mail目录下查找所有类型为文件的对象,并将它们作为参数传递给rm -rf命令,以删除这些文件。

9、当前目录及子目录下查找所有以.txt和.pdf结尾的文件

方法一:find . \( -name "*.txt" -o -name "*.pdf" \)
方法二:find . -name "*.txt" -o -name "*.pdf"

10、找出/home下不是以.txt结尾的文件

命令:find /home ! -name "*.txt"

11、找出比file.log修改时间更长的所有文件

命令:find . -type f -newer file.log

12、删除当前目录下所有.txt文件

命令:find . -type f -name "*.txt" -delete

三、sed

(一)语法

sed [选项] '操作' 参数

sed [选项] -f scriptfile 参数

(二)选项

①-e:表示用指定命令或脚本处理

②-f:指定脚本文件

③-h:帮助

④-n:表示仅显示处理后的结果

⑤-i:直接编辑文本文件

⑥-r:支持扩展正则

(三)操作

1、a:增加,在当前行下面以行增加指定内容

2、c:替换,将选定行替换

3、d:删除,删除指定行

举例:

①删除空白行                                  sed '/^$/d' file
②删除文件的第2行                         sed '2d' file
③删除文件的第2行到末尾所有行    sed '2,$d' file
④删除文件最后一行                         sed '$d' file
⑤删除文件中所有开头是test的行     sed '/^test/'d file

4、i:插入,在选定行的上面插入一行

5、p:打印

举例:

所有在模板test和check所确定的范围内的行都被打印                  sed -n '/test/,/check/p' file
打印从第5行开始到第一个包含以test开始的行之间的所有行        sed -n '5,/^test/p' file
对于模板test和west之间的行,每行的末尾用字符串aaa bbb替换  sed '/test/,/west/s/$/aaa bbb/' file

6、s:替换,替换指定字符

7、y:字符转换

(四)案例

1、输出符合条件的文本:

①sed -n 'p' test.txt     #相当于cat

②sed -n '3p' test.txt    #打印第3行

③sed -n ‘/w/p' test.txt      #打印所有包含字符"w"的行

④sed -rn '/wo+/p' test.txt    #打印所有包含字符"wo"后面跟随一个或多个字符"o"的行

⑤sed -n '3,6p' test.txt    #打印第3到6行的内容

⑥sed -n 'p;n' test.txt    #打印奇数行

⑦sed -n 'n;p' test.txt    #打印偶数行

⑧sed -n '1,6{p;n}' test.txt    #打印1到6行之间的奇数行

⑨sed -n '5,${p;n}' test.txt    #从第5行开始打印奇数行

⑩sed -n '/the/p' test.txt    #匹配the

sed -n '5,/the/p' test.txt     #匹配从第5行开始到包含the的行

sed -n '/the/,10p' test.txt     #匹配从包含the的行到第10行结束

sed -n '/the/=' test.txt    #打印包含the的行号        =命令用于在行的前面输出行号

2.删除符合条件的文本

①nl test.txt | sed '3d'    #删除第3行

②nl test.txt | sed '3,5d'

③nl test.txt | sed '/the/d'    #删除the所在行

④nl命令可以将文本文件的内容加上行号,并将处理后的结果输出到终端窗口。

3.替换符合条件的文本

①nl test.txt | sed 's/the/TTTTTT/'    #替换全文本

②nl test.txt | sed '4s/the/TTTTTT/'    #替换第4行

③nl test.txt | sed 's/l/L/2'        #替换匹配到的第2个l

4.迁移符合条件的文本

H:复制;g:覆盖;G:追加行;w:保存;r:读取;a:追加内容

①sed '/the/{H;d};$G' test.txt #匹配the所在行并迁移至文件末尾

②sed '3aTest' test.txt #在第3行下面新建行并写入Test

③sed '/the/aTest' test.txt #匹配the所在行并在下一行写入Test

5.使用脚本编辑文件内容

vim opt.txt

1,5H
1,5d
16G
sed -f opt.txt test.txt    #将1到5行迁移至16行后

6.以上修改想要直接修改文本源文件,只需要加入选项"-i"

四、awk

(一)语法

awk 选项 '模式或条件{编辑命令}' 文件1 文件2 ...

awk -f 脚本文件 文件1 文件2 ...

(二)选项

1、-F        指定每行的分隔符

2、默认分隔符为空格

(三)内建变量

①FS:指定每行的分隔符

②NF:指定当前处理行的字段个数

③NR:当前处理行的行号

④$0:当前处理行的整行内容

⑤$n:当前处理的第n个字段

⑥FILENAME:处理文件名

⑦RS:数据记录分隔,默认是\n

(四)案例

1、按行输出

①awk '{print}' /etc/passwd          #等同cat

②awk 'NR==1{print}' /etc/passwd #打印第1行

③awk 'NR>=1&&NR<=3{print}' /etc/passwd    #打印前3行

④awk 'NR==1,NR==3{print}' /etc/passwd #打印1到3行

⑤awk 'NR%2==0{print}' /etc/passwd     #打印偶数行

⑥awk 'NR%2!=0{print}' /etc/passwd     #打印奇数行

2、按段输出

①ifconfig ens33 |awk '/netmask/{print $2}'     #筛选IP地址

②#筛选用户信息文件第一行的前三段

awk -F : 'NR==1{print $1 $2 $3}'  /etc/passwd

awk -F : 'NR==1{print $1,$2,$3}'  /etc/passwd  

awk -F : 'NR==1{print $1"|"$2"|"$3}'  /etc/passwd

③cat /etc/shadow | awk -F : '$2=="!!"{print $1}'     #打印不能登录系统的用户       !!表示用户无密码

3、调用shell命令

统计能够登录系统的用户个数   

cat /etc/passwd | awk -F : '/bash$/{print | "wc -l"}' /etc/passwd

cat /etc/passwd | awk -F : '/bash$/{print }' /etc/passwd   | wc -l

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/658284.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

读发布!设计与部署稳定的分布式系统(第2版)笔记04_集成点

1. 第一个拥有10亿用户的网站 1.1. 2016年&#xff0c;Facebook宣布其每日活跃用户数量为11.3亿 1.2. 对整个应用程序来说&#xff0c;“五个9”的可靠性远远不够&#xff0c;这每天会让成千上万的用户失望 1.3. 假如按照六西格玛质量标准来衡量&#xff0c;那么Facebook每天…

LIN-网络管理:休眠(Go To Sleep)和唤醒(Wake up)

文章目录 一、LIN总线的两种状态二、休眠模式&#xff08;Go To Sleep&#xff09;①利用诊断帧中的主机请求帧 0x3C 作休眠命令②当总线静默(没有显性和隐性电平之间的切换)4s&#xff5e;10s 时&#xff0c;节点自动进入休眠状态。 三、唤醒模式&#xff08;Wake up&#xff…

智能图片降噪-Topaz Photo AI

今天给各位小伙伴们测试了一款可以使视频智能无损放大的软件——Topaz Photo AI。 小编在很早之前也有了解过Topaz系列的软件&#xff0c;都是通过人工智能处理的&#xff0c;对小白新手们很适用&#xff0c;由于使用人工智能方面的软件或程序对硬件要求都比较高&#xff0c;因…

交通指南系统

一、实验目的 1. 掌握图的基本存储方法&#xff1b; 2. 掌握有关图的操作算法并用高级语言实现&#xff1b; 3. 熟练掌握图的两种搜索路径的遍历方法。 二、实验内容 假设以一个带权有向图表示某一区域的公交线路网&#xff0c;图中顶点代表一些区域中的重要场所&#xff0…

设计模式(二十二):行为型之备忘录模式

设计模式系列文章 设计模式(一)&#xff1a;创建型之单例模式 设计模式(二、三)&#xff1a;创建型之工厂方法和抽象工厂模式 设计模式(四)&#xff1a;创建型之原型模式 设计模式(五)&#xff1a;创建型之建造者模式 设计模式(六)&#xff1a;结构型之代理模式 设计模式…

【C】转义字符以及注释的介绍

转义字符 转义字符顾名思义就是转变意思。就是把原来字符的意思转变了&#xff0c;让它拥有别的意思。 如果我们想要在屏幕上打印&#xff1a;c:\code:\test.c 这样一串文字的话&#xff0c;我们代码肯定会这样写&#xff1a; #include<stdio.h> int main() {printf(&q…

压缩感知入门④基于总体最小二乘的扰动压缩感知重构算法

压缩感知系列博客&#xff1a;压缩感知入门①从零开始压缩感知压缩感知入门②信号的稀疏表示和约束等距性压缩感知入门③基于ADMM的全变分正则化的压缩感知重构算法压缩感知入门④基于总体最小二乘的扰动压缩感知重构算法 文章目录 1. Problem2. 仿真结果3. MATLAB算法4. 源码地…

Bean 的六种作用域

观前提示:本篇博客演示使用的 IDEA 版本为2021.3.3版本,使用的是Java8(又名jdk1.8) 前端使用VSCode(Visual Studio Code1.78.2) 电脑使用的操作系统版本为 Windows 10 目录 前言 Bean Spring 容器在初始化⼀个 Bean 的实例时&#xff0c;同时会指定该实例的作⽤域。 1. …

chatgpt赋能python:Python怎样能通过值找到键

Python怎样能通过值找到键 Python是一种高级编程语言&#xff0c;它在工业、医疗、科学、财务等多个行业中被广泛使用&#xff0c;是数据科学、人工智能和深度学习等领域的首选语言。在Python编程中&#xff0c;有时候我们需要在字典中根据值查询对应的键&#xff0c;本文将介…

chatgpt赋能python:Python排序算法大全

Python排序算法大全 导言 排序是程序员日常工作中最常见的操作之一。Python提供了许多实现排序算法的库和函数&#xff0c;本文将带您了解这些排序方法。 初级排序算法 冒泡排序 Bubble Sort 冒泡排序是一种简单的排序算法。它通过不断交换相邻的元素&#xff0c;将大的元…

【微服务架构设计和实现】4.2 服务边界的定义和划分

第一章&#xff1a;【云原生概念和技术】 第二章&#xff1a;【容器化应用程序设计和开发】 第三章&#xff1a;【基于容器的部署、管理和扩展】 第四章&#xff1a;【4.1 微服务架构概述和设计原则】 4.2 服务边界的定义和划分 4.2 服务边界的定义和划分4.2.1 什么是服务边…

docker创建Ubuntu,Ubuntu创建桌面环境,本机使用VNC连接

题目&#xff1a;docker创建Ubuntu&#xff0c;Ubuntu创建桌面环境&#xff0c;本机使用VNC连接 文章目录 前言docker创建基于Ubuntu:20.04的容器使用ssh连接容器容器安装桌面环境本机电脑使用VNC连接测试用python来创建的ui能否显示坑参考 前言 为什么我想要用ubuntu的桌面环…

RFID课程要点总结_2 Identification

2. Identification 简单说RFID就是物体上贴tag&#xff0c;用reader上的antenna去读取&#xff0c;这三个是主要组成。 Reader’s function Energy supply: 比如有的标签自身不带能量需要reader提供信号中蕴含的能量 Communication: 最基本的功能&#xff0c;和tag识别&…

Flink CDC、OGG、Debezium等基于日志开源CDC方案对比

先上一张图&#xff0c;后面再慢慢介绍&#xff1a; CDC概述 CDC 的全称是 Change Data Capture &#xff0c;在广义的概念上&#xff0c;只要能捕获数据变更的技术&#xff0c;我们都可以称为 CDC 。我们目前通常描述的CDC 技术主要面向数据库的变更&#xff0c;是一种用于捕…

56、基于51单片机智能医院红外点滴检测输液器报警系统设计(程序+原理图+PCB源文件+参考论文+参考PPT+元器件清单等)

引 言 目前&#xff0c;国际上每年每人的静脉输液量平均为2.5-3.3瓶&#xff0c;就我国而言&#xff0c;每年每人平均输液量8瓶&#xff0c;总量超过100亿瓶&#xff0c;其中每年约有39万人死于输液不良反应 。在如今新冠肺炎疫情持续的情况下&#xff0c;静脉输液仍是临床医学…

chatgpt赋能python:Python中如何选取list13列

Python中如何选取list 1 3列 介绍 对于SEO优化来说&#xff0c;选取适当的数据是至关重要的一步。Python是一门强大的编程语言&#xff0c;可以帮助人们快速而准确地处理数据&#xff0c;进而选择最佳数据进行SEO。在Python中&#xff0c;我们可以使用一些简单的方法来选择li…

kubespray部署kubernetes集群

kubespray部署kubernetes集群 1、kubespray简介 Kubespray 是开源的部署生产级别 Kubernetes 集群的项目&#xff0c;它整合了 Ansible 作为部署的工具。 可以部署在 AWS&#xff0c;GCE&#xff0c;Azure&#xff0c;OpenStack&#xff0c;vSphere&#xff0c;Packet(Bare m…

马原否定之否定观点

事物普遍联系和发展 事物之间的普遍联系的 答案B C考察的是联系的条件性 1.联系对事物的发展有制约和支撑的作用 2.联系的条件可以相互转化 所以我们可以将不利条件转化成有利条件 3.建立联系必须尊重客观规律。 对立统一是事物发展的根本规律、 唯物辩证法揭示了事物发展一…

ELK日志收集系统集群实验

目录 一、实验拓扑 二、环境配置 (一)设置各个主机的IP地址为拓扑中的静态IP&#xff0c;在两个节点中修改主机名为node1和node2并设置hosts文件 1、在虚拟机node1上操作 2、在虚拟机node2上操作 3、测试node1与node2的通联性 三、 安装node1与node2节点的elasticsearch…

大数据Doris(四十四):kafka json 数组格式数据导入到Doris

文章目录 kafka json 数组格式数据导入到Doris 一、创建 Doris 表 二、创建 Kafka topic