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
linux里面三剑客的重要作用相关推荐
- linux文本三剑客演讲稿,linux文本三剑客之grep
grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正 ...
- Linux系统主要目录及作用
Linux系统主要目录及作用 /bin 一些基础命令 /etc 系统或软件的配置文件 /boost 内核相关和启动相关的文件 /dev 存放着各种设备文件 /home 用户相关的目录 ...
- Linux 下各个目录的作用及内容
Linux 下各个目录的作用及内容 在 Linux 下,我们看到的是文件夹(目录): 在早期的 UNIX 系统中,各个厂家各自定义了自己的 UNIX 系统文件目录,比较混乱.Linux 面世不久后,对 ...
- linux系统/var目录的作用
linux系统/var目录的作用 一.总结 一句话总结: 1.如果/usr是安装时会占用较大硬盘容量目录,那么/var就是在系统运行后才会渐渐占用硬盘容量的目录. 2.因为var目录主要针对常态性变动 ...
- linux 匹配文本中的ip,linux文本三剑客匹配网卡IP地址大PK(CentOS 7系统)
运维工程师在做配置的过程中很多时候都需要去获取目标服务器网卡上的IP地址,那究竟用什么方式获取更便捷了,博主今天就带大家使用linux文本三剑客分别获取一下网卡的IP地址,最后我们再来对比一下. 实验 ...
- Linux /dev目录详解和Linux系统各个目录的作用
Linux /dev目录详解和Linux系统各个目录的作用 标签: linuxtcpfunctionclassfirefoxtimer 2012-01-11 23:08 45517人阅读 评论(2) ...
- linux各文件夹的作用
linux各文件夹的作用 linux下的文件结构,看看每个文件夹都是干吗用的 /bin 二进制可执行命令 /dev 设备特殊文件 /etc 系统管理和配置文件 /etc/rc.d 启动的配置文件和脚本 ...
- Linux文本三剑客--grep、sed、awk
Linux文本三剑客–grep.sed.awk 文章目录 Linux文本三剑客--grep.sed.awk 1.grep 1.1什么是grep 1.2使用grep 命令格式 命令参数 基本正则表表达式 ...
- linux下mnt目录的作用
linux下mnt目录的作用: 挂接光驱.USB设备的目录,加载后,会在mnt里多出相应设备的目录.mnt是mount的缩写.
最新文章
- linux上logbok实时日志_如何实时查看linux下的日志
- 一篇文章了解Github和Git教程-AndroidStudio上传Github教程
- BZOJ3261 最大异或和 解题报告(可持久化Trie树)
- Linux -- Samba访问控制
- gcc编译选项-o和-c介绍
- 有监督回归:最小二乘学习法
- css 选择一列表菜单,css实现菜单列表随滚动条指定到对应内容
- usb接口linux系统设计,AUFS 联合文件系统 - 基于USB接口的微型桌面Linux系统设计
- Google Adwords 关键字策略 – SEO数据搭配
- 应用层协议:HTTP
- 扒一扒HTTPS网站的内幕
- Python进阶练习题,新手快码起来
- 对称加密算法之Java SM4算法应用 附可用工具类
- Cameralink转HDMI接口转换模块
- JRebel出现ERROR Failed to obtain seat. Unable to connect to license server
- 梅隆大学计算机专业申请,卡内基梅隆大学计算机专业申请条件(附案例)
- 常见嵌入式OS资料汇总
- dellnas存储服务器型号,Dell Storage NX系列NAS存储
- js如何让段落首行缩进2个字符
- halcon机器视觉实例1--表面划痕检测
热门文章
- 201771010118马昕璐
- OpenStack基础知识-virtualenv工具详解
- 深入理解Python中的元类(metaclass)
- P1266 速度限制
- DIV+CSS 入门
- 【原】.Net创建Excel文件(插入数据、修改格式、生成图表)的方法
- vs2008下设置.h, .lib和 .dll 的路径配置全图及其意义
- 我的世界末日之后无限法则服务器,《我的世界》全新玩法无限法则上线
- oracle中OEM证书失效怎么办,安全证书过期怎么办 网站安全证书失效处理【解决方法】...
- js正则 匹配 正则表达式