linux100day(day4)--文本处理三剑客
在介绍三剑客之前,先来认识一下通配符和正则表达式
通配符
正则表达式
作用:通过一些特殊字符,来表示一类字符内容
1、字符匹配
. 任意一个字符
[ ] 范围内的任意一个字符
[^ ] 取反
字符类 [:digit:] [:alnum:] [:alpha:] [:lower:] [:upper:] [:space:] [:punct:]
2、次数匹配
* 匹配前面的字符0次到多次
? 匹配前面的字符0次到1次
+ 匹配前面的字符1次到多次
3、位置锚定
^ 锚定行首
$ 锚定行尾
\b 锚定词首和锚定词尾
\> 锚定词尾
\< 锚定词首
<\root\> 匹配root单词
\{m\} 匹配前面的字符m次
\{m,n\} 匹配前面的字符m到n次
4、分组
\(\)
分组特性:默认清空下,linux系统下回为分组指定变量,变量表示形式\1 \2 \3
day4--文本处理三剑客awk,sed,grep
三剑客用法非常灵活强大,需要在练习中慢慢体会,遂以练习为主。
awk(报告生成器)
awk作为三剑客的老大,擅长于取列,主要用来做文本输出格式化
awk在处理文件时是逐行处理的
在awk中,全部行称为$0,第一个字段称为$1,第二个字段称为$2……
NR为行号,NF表示最后一行
BEGIN表示最开始执行,END表示最末尾执行,因为这种特性,BEGIN常常用来赋值
awk [选项] [处理命令(脚本)] [文件]
awk -F 指定输入文件折分隔符
awk -v 赋值一个用户定义变量
awk -f 从脚本文件中读取awk命令
例1、输出/etc/passwd第一行的第一个域
例2、打印出/etc/passwd的第3个域和第5个域
例3、匹配/var/log/message中,带有erro关键字的相关信息
例4、输出/etc/passwd中文件名,行数,列数,和整行信息
awk -F ':' '{print FILENAME, NR , NF ,$0}' /etc/passwd
例5、使用冒号分隔符,查询最后一列
例6、使用awk输出第一块网卡的ip地址
sed(流处理器)
sed作为三剑客的老二,擅长取行,替换和数据搜寻
sed [选项] [脚本] [文件]
sed -e 以选项中指定的脚本来处理输入结果
sed -f 以选项中指定的脚本文件来处理输入结果
sed -n 只显示处理后结果
sed -i 替换
例1、查看/etc/passwd5-10行
这个p代表print打印,同理,d代表delete删除
例2、搜寻/etc/passwd中有root关键字的行
例3、新建一个文件,并删除2到4行
grep(文本行过滤工具)
grep [option]... PATTERN [FILE]
PATTERN一般使用两种方法,正则表达式和通配符
egrep = grep -E 使用扩展的正则表达式进行匹配
fgrep = fast grep 只使用文件通配符进行匹配
grep 默认使用正则表达式进行文本匹配
grep -P使用perl语言的正则表达式引擎进行搜索
grep -f指定文件
grep -i 忽略大小写
grep -v反选
grep --color=auto 语法着色
grep -c统计
grep -o输出时仅显示匹配内容(默认输出的是匹配到的行)
grep -n显示行号
grep -w只匹配与整个单词匹配的行
例1、显示/proc/meminfo文件中大小s开头的行
例2、显示/etc/passwd文件中不以/bin/bash结尾的行
例3、显示/etc/passwd文件中UID最大的用户的用户名
例4、如果用户root存在,显示其默认的shell程序
例5、找出/etc/passwd中的两位或三位数
最新文章
- 百度地图定位经纬度返回4.9E-324有关问题
- Linux学习书籍推荐
- js时间对象格式化 format(转载)
- Codeblocks + opencv + Cmake + minGW 环境搭建(一劳永逸版)
- Y86处理器的各个阶段
- [c#]控制台进度条的示例
- poj 1015 Jury Compromise_dp
- perl学习(9) 实例:取出操作时间最长的100个记录
- 本文摘录 - Infobright
- jQuery自定义插件--banner图滚动
- IO流之字符流知识总结
- IAB303 Data Analytics Assessment Task
- Codeforces Codeforces Round #484 (Div. 2) E. Billiard
- burpsuite使用教程和实战详解(一)
- 【黑魔法】Covering Indexes、STRAIGHT_JOIN
- django项目的部署
- ASP:连接Access数据库的方法及使用感受
- 在Ubuntu 14.04 64bit上安装百度云Linux客户端BCloud
- Linux磁盘及分区之wwid和uuid
- Android开发和调试必备工具-SDK Tools
热门文章
- python进阶--字典排序
- 剖析Unreal Engine超真实人类的渲染技术Part 3 - 毛发渲染及其它
- eclipse+MyEclipse+WebLogic开发简单的EJB
- 【DFS的分支限界】(例题-算式等式)
- 【分治】黑白棋子的移动-C++
- 小白学python之整型,布尔值,十进制二进制转换和字符串详解for循环!
- 第一届合天杯河北科技大学网络安全技术大赛 web6 writeup
- hdu6383 p1m2(二分答案)
- Visual Studio 调试系列1 Debug 与 Release 模式
- C#中判断socket是否已断开的方法