linux里面三剑客的重要作用

在服务器日志fresh.log中,找到所有报错的日期

$ sed -n '/Error/p' | awk '{print $1}' fresh.log

grep:查找
sed:行编辑器
awk:文本处理工具

正则表达式的应用场景
查找所有包含'xxx'的行
取出以'abc'开头的所有单词
匹配两位数、密码、QQ号、身份证号等

查找、取出、匹配符合条件的某个字符或字符串

cp /etc/passwd ~/. 复制一个文件到主目录

grep 'root' passwd 查询 '查询的字符串' 查询的文件

字符:特定字符、范围内字符、任意字符。

特定字符:某一个具体的字符

范围内字符:单个字符[] 数字字符:[0-9] [259]
小写字符:[a-z] 大写字符:[A-Z]

范围内字符:反向字符^
取反:[^0-9] [^0]

任意字符: '.' 注意区分和 '[.]' '\.' 的含义

边界字符:头尾字符
头字符:^ : ^root 注意与[^]的区别
尾字符:$ : false$
空行的表示:^$


元字符(代表普通字符或者特殊字符)
1. \w:# 匹配任何字类字符,包括下划线 [a-zA-Z0-9_]
2. \W:# 匹配任何非字类字符 [^a-zA-Z0-9_]

3. \b:# 匹配单词的边界,用来分隔单词(只匹配边界字符的位置,而不匹配位置本身的这个字符。
边界字符包括 ~`!@#$%^&*( )-=+[];:'"\|,<.>/? 等等这一类怪符号 )

正则表达式字符组合
4. "[A-z][a-z]" #匹配两个在一个大写一个小写字母a-z这个范围的字符串

5.正则表达式字符组合

字符串:重复、逻辑这样的组合表达式

*:零次或多次匹配前面的字符或表达式
+:一次或多次匹配前面的字符或子表达式
?:零次或一次匹配前面的字符或子表达式
grep 'se*' test.txt

grep 'se+' test.txt

grep 'se\?' test.txt

 

重复特定次数:{n,m}
* :{0,} 最小零次,最大很多次
+ :{1,} 最小一次,最大很多次
? :{0,1} 最小零次,最大一次
例如:grep '[0-9]\{2,3\}' passwd


任意字符串的表示: .*
例如:grep '^r.*' passwd

grep 'm.*c' passwd 与 grep 'm..c' passwd 的区别
前者是作为任意长度而出现 后者作为一个单词来出现

grep 'bin/\(false\|true\)' passwd

 

匹配4到10位的QQ号
grep '^[0-9]\{4,10\}$' qq.txt

匹配15位到18位的身份证号(支持带X的)

案例2:匹配15位或18位身份证号
^[1-9]([0-9]{13}|[0-9]{16})[xX0-9]$


案例3:匹配密码(密码规则为6-18位字符,包含a-zA-Z0-9_)
^\w{6,18}$


sed sed---文本处理
自动处理文件 正则选定文本
分析日志文件 到
修改配置文件 sed---进行处理

命令行格式:
$sed [options] 'command' file(s)

options: -e; -n
command:行定位(正则)+sed命令

1 例如:sed -n '/root/p'
2 例如:sed -e '10,20d' -e 's/false/true/g'

脚本格式
$sed -f scriptfile files(s)

一、基本操作命令
1. p命令:打印相关的行
1 sed 'p' passwd #会打印出两行,因为sed的原理是读入一行,输出一行,此处再加上p命令打印出来的一行,所以最后会打印出两行
2 sed -n 'p'passwd #加了-n选项之后,只会打印出相关的行,那些不相关的行则不会打印出来

二、行定位
1. 定位一行:x;(x为数字,行号的意思),/pattern/(pattern为正则表达式,正则两边加上//)
1 例如:sed -n '10p' passwd #通过行号定位,定位到第10行,并打印到屏幕但是无法看到行号
2 例如:nl passwd | sed -n '10p' #使用nl命令显示文件的行号,再通过管道传递给sed进行行处理。
3 例如:sed -n '/mooc/p' passwd #通过正则定位,定位含有mooc字符串这一行,并打印到屏幕

2. 定位几行:
1 x,y #(定位一个区间,x行到y行)
例如:nl passwd | sed -n '10,20p'

2 x,/pattern/ #(定位一个区间,x为开始的行号,pattren为结束的正则所表示的行)
例如:nl passwd | sed -n '10,/mooc/p'

3 /pattern1/,/pattern2/ #(定位一个区间,pattern1为开始的正则1所表示的行,pattern2为结束的正则2所表示的行)
2.3.1 例如:nl passwd | sed -n '/news/,/mooc/p'

4 "!" #感叹号,对所选的行进行取反
例如:nl passwd | sed -n '10!p'
例如:nl passwd | sed -n '10,20!p'
3.定位间隔几行:
3.1 first~step (first为开始的行,setp为步长也就是间隔几行)
3.1.1 例如:nl passwd | sed -n '1~2p' #定位从第1行开始,中间间隔2行的所有的行

 

一、a 命令 #新增加一行,在所选行的下面新增一行,并输入内容
1. 命令格式:sed '行号+a命令+需要增加的内容'
2. 例如:nl passwd | sed '5a======' #在第5行的下面新增一行,并写入======这些内容
3. 例如:nl passwd | sed '1,5a======' #在第1-5行每一行下面都增加一行并写入同样的内容

二、i 命令 #新插入一行,在所选行的上面插入一行,并输入内容
1. 命令格式:sed '行号+i命令+需要插入的内容'
2. 例如:nl passwd | sed '5i======' #在第5行的上面插入一行,并写入======这些内容
3. 例如:nl passwd | sed '1,5i======' #在第1-5行每一行上面都插入一行并写入同样的内容

三、c 命令 #替换一行,将所选定的行的内容替换成需要替换的内容
1. 命令格式:sed '行号+c命令+需要替换的内容'
2. 例如:nl passwd | sed '5c======' #将第5行的内容替换成======这些内容
3. 例如:nl passwd | sed '1,5c======' #将1-5行整体的内容都替换成======这些内容

四、d 命令 #删除一行,将所选行的内容全部删除
1. 命令格式:sed '行号+d命令+需要替换的内容'
2. 例如:nl passwd | sed '5d======' #将第5行的内容全部删除

五、案例一:优化服务器配置
1. 目标:在SSH的配置文件中加入相应的文本:
Port 52113
PermitRootLogin no
PerminEmptyPasswords no
2. 操作命令:sed '$a \ port 52113 \n permitrootlogin no' ssh_config #在文本尾部的下面增加两行,并写入相关内容($美刀符号定位文本的尾部)
六、案例二:
文本处理
1. 目标:删除文本中的空行
2. 操作命令:sed '/^$/d' all.txt #删除文本中的空行

七、案例三:
sed高级命令
&:替换固定字符串
sed 's/^[a-z_-]\+/& /' /etc/passwd 给passwd文件里的用户后面加几个空格。

2. \u \l \U \L转换大小写,前边小写u和l仅变更开头字符,大写U和L变更全部
sed 's/^[a-z-_]\+/\u&/' /etc/passwd 将用户名第一个字母转大写

八、案例四:
数据筛选:
获取用户名字段:sed 's/\(^[a-z_-]\+\):.*$/\1/' /etc/passwd
获取第二个字段:
sed 's/\(^[a-z_-]\+\):x:\([0-9]\+\):.*$/\1 \2/' /etc/passwd
九、案例五:
sed 's/\(^[a-z_-]\+\):x:\([0-9]\+\):\([0-9]\+\):.*$/USER:\1 UID:\2 GID:\3/' /etc/passwd

ifconfig eth0 | grep 'inet ' | sed -r 's/^.*r:([0-9\.]+).*$/\1/'
挑出ip地址

sed 命令之 -r读 -w写
-r:复制指定文件插入到匹配行
-w:复制匹配行拷贝到指定文件里
1. sed '1r 123.txt' abc.txt : 代表把123.txt整个文件的内容附加在abc.txt的第一行内容之后
2. sed '1w 123.txt' abc.txt : 代表把abc.txt的第一行拷贝到123.txt文件

内容在持续更新中。。。。。。


注意此时会覆盖文件123.txt原本的内容

转载于:https://www.cnblogs.com/crazying/p/8258641.html

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

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

相关文章

i2c通信 msp430g2553_关于msp430G2553的I2C串行通信

这是msp430g2xx3_uscib0_i2c_09例程&#xff0c;i2c从机接收数据的程序&#xff0c;请高手指点一下&#xff0c;为什么读取UCB0RXBUF是在发送中断中&#xff1f;接收机是在什么时候进入发送中断的&#xff1f;#include unsigned char *PRxData; // Pointer to RX dataunsigned …

Google Guava BiMaps

接下来的番石榴之旅&#xff0c;是另一种有用的收藏类型BiMap 。 实际上&#xff0c;这非常简单&#xff0c;BiMap只是双向地图。 反转地图 普通的Java映射是一组键和值&#xff0c;您可以按键查找值&#xff0c;这非常有用&#xff0c;例如&#xff0c;说我想创建一个&#x…

老大写得一个非常高大上的Makefile,包括非常多语法:

一个非常高大上的Makefile&#xff0c;包括非常多语法&#xff1a; TARGET api-login INSTALL_PATH /huishoubao/cgiinclude ../../implements/log/Makefile.log include ../../implements/tools/Makefile.tools include ../../implements/db/Makefile.db include ../../impl…

计算机等级考试模拟题卷子,二级VB模拟试卷 1

一、选择题&#xff1a;35题&#xff0c;2分/题&#xff0c;共70分下列各题A)、B)、C)、D)四个选项中&#xff0c;只有一个选项是正确的&#xff0c;请将正确选项涂写在答题卡相应位置上&#xff0c;答在试卷上不得分。1.假定窗体有一个标签&#xff0c;名为Label1,为了使该标签…

bugly怎么读_腾讯Bugly巨坑:使用不当造成UI界面卡死

本文由CocoaChina网友gagaga投稿前言Bugly和dispatch_once使用不当&#xff0c;会造成UI界面卡死。笔者在前段时间碰见了这样的一个卡死的情况&#xff0c;特意记录下来。iOS开发者或多或少都听过或用过Bugly。它是腾讯开发的一个SDK&#xff0c;用来捕捉App中的crash。对于dis…

复习HTML CSS(5)

n <meta>标记 <meta>的主要作用&#xff0c;是提供网页的源信息。比如&#xff1a;指定网页的搜索关键字 <meta>标记有两个属性&#xff1a;http-equiv和name。 1、 http-equiv属性 功能&#xff1a;模拟http协议文件头信息&#xff0c;当信息从服务器端传…

『cs231n』卷积神经网络工程实践技巧_下

概述 计算加速 方法一&#xff1a; 由于计算机计算矩阵乘法速度非常快&#xff0c;所以这是一个虽然提高内存消耗但是计算速度显著上升的方法&#xff0c;把feature map中的感受野&#xff08;包含重叠的部分&#xff0c;所以会加大内存消耗&#xff09;和卷积核全部拉伸成为向…

Spring属性占位符配置器–一些不太明显的选项

Spring的PropertySourcesPlaceholderConfigurer用于从XML或Java Config中定义的Spring bean定义外部化属性。 PlaceholderConfigurer支持的一些选项在文档中并不明显&#xff0c;但是很有趣并且可能有用。 首先&#xff0c;以Spring文档中的示例为例&#xff0c;考虑一个属性文…

计算机扬天m400c联想,【联想扬天M参数】联想扬天M系列台式电脑参数-ZOL中关村在线...

CPU型号内存容量硬盘容量屏幕尺寸显卡类型 价格详细对比Intel 奔腾双核 E52002GB DDRII 667MHz250GB SATAII 7200转高速防震硬盘集成显卡对比Intel 奔腾4 631512MBGB 512MB DDRII53380GB 7200转集成显卡对比Intel Atom 2301GBGB DDRII160GB 7200转高速防震硬盘集成显卡对比Inte…

SqlServer知识点

在公司天天写Sql写,存储过程,但是公司工具模板把创建的语句都写好了,只负责写里面的逻辑,久而久之,创建语句都不会写了。还有一些知识点都很模糊,平常使用的时候都不清楚,稀里糊涂的就在用。在这里整理一下。巩固复习。 一.存储过程。 1.存储过程类似编程语言的里面的函数,方法…

css3 flex 布局

今天做一个小实战&#xff0c;需要让一个登录框始终保持水平和垂直居中&#xff0c;第一个想到的就是通过定位&#xff08;要想让一个div居中&#xff0c;采用定位可以解决&#xff0c;示例&#xff09;&#xff0c; 然后开始接触flex布局&#xff0c;学完感觉真的好用&#x…

ios wkweb设置图片_iOS WKWebView的使用

WKWebView的使用前言最近项目中的UIWebView被替换为了WKWebView&#xff0c;因此来总结一下。示例Demo&#xff1a;WKWebView的使用本文将从以下几方面介绍WKWebView&#xff1a;1、WKWebView涉及的一些类2、WKWebView涉及的代理方法3、网页内容加载进度条和title的实现4、JS和…

元组的详细操作

一、创建元组 name(chinese,gansu,beijing)创建空元组name()元组中只包含一个元素时&#xff0c;需要在元素后面添加逗号消除歧义name(chinese,) 二、访问元组 元组可以使用下标索引来访问元组中的值name(chinese,gansu,beijing)假如要访问chinese则使用name[0] 三、修改元组 元…

Spring Data JDBC通用DAO实现–迄今为止最轻量的ORM

我很高兴宣布Spring Data JDBC存储库项目的第一个版本。 这个开放源代码库的目的是为基于Spring框架中 JdbcTemplate关系数据库提供通用&#xff0c;轻量且易于使用的DAO实现&#xff0c;与项目的Spring Data 框架兼容。 设计目标 轻巧&#xff0c;快速且开销低。 只有少数几个…

【Spark】SparkStreaming-加载外部配置文件

SparkStreaming-加载外部配置文件 spark加载配置文件_百度搜索Spark加载外部配置文件 - CSDN博客spark读取配置文件中的配置 - CSDN博客spark加载properties配置文件方法 - u013013024的博客 - CSDN博客Spark 官方文档&#xff08;4&#xff09;——Configuration配置 - bigbi…

对计算机财务管理的理解,计算机财务管理

计算机财务管理1、引用(P4-P5)&#xff1b;易出名词解释、选择题。应识记、理解。答&#xff1a;(1)相对引用(2)绝对引用(3)混合引用2、IF、SUM、VLOOKUP、DGET函数的使用方法(P22、P28、P30、P31) 识记、理解用途&#xff0c;能应用。答&#xff1a;IF函数用逻辑表达式来判断指…

卡盟主站搭建_搭建卡盟主站下载|搭建卡盟主站教程 (附带源码)百度云_ - 极光下载站...

最近&#xff0c;很多小伙伴们都在想搭建一个卡盟的主站&#xff0c;但是鉴于很多人都不太懂编程&#xff0c;也不知道如何找到源码。所以现在小编就为大家带来搭建卡盟主站教程&#xff0c;而且还把源码也一起送来了&#xff0c;想要搭建卡盟主站的话就记得一定要下载哦&#…

【期望DP】

【总览】 【期望dp】 求解达到某一目标的期望花费&#xff1a;因为最终的花费无从知晓&#xff08;不可能从$\infty$推起&#xff09;&#xff0c;所以期望dp需要倒序求解。 设$f[i][j]$表示在$(i, j)$这个状态实现目标的期望值&#xff08;相当于是差距是多少&#xff09;。 首…

复习HTML CSS(2)

n 项目符号嵌套编号思路 标签的内容&#xff08;文本、项目符号、表格、图片等&#xff09;必须放在最底层标记中。 n 图片标记&#xff08;行内元素&#xff0c;单边标记&#xff09; l 语法&#xff1a;<img 属性 “值”> l 常用属性 Width&#xff1a;图片宽…

Spring MVC:使用基于Java的配置创建一个简单的Controller

这是我博客上与Spring MVC相关的第一篇文章。 开端总是令人兴奋的&#xff0c;因此我将尽量简洁明了。 Spring MVC允许以最方便&#xff0c;直接和快速的方式创建Web应用程序。 开始使用这项技术意味着需要Spring CORE的知识。 在文章中&#xff0c;您将了解有关创建简单的Spri…