别人的Linux私房菜(12)正则表达式与文件格式化处理
vi gerp awk sed支持正则表达式 cp ls不支持,只能使用bash本身的通配符
正则表达式分为基础正则表达式和拓展正则表达式
使用正则表达式注意语系的影响
http://cn.linux.vbird.org/linux_basic/0330regularex_2.php
grep 查找字符
-A :后面可加数字,为 after 的意思,除了列出该行外,后续的 n 行也列出来;
-B :后面可加数字,为 befer 的意思,除了列出该行外,前面的 n 行也列出来;
如:demsg列出内核信息,dmesg | grep ‘qx1’
列出行号并不同颜色标记:dmesg | grep -n --color=auto ‘qx1’
显示关键词的前二行后三行并标记 dmesg | grep -n -A3 -B2 --color=auto ‘qx1’
查找特定字符串:grep -n 'the' regular_express.txt
利用中括号 [] 来搜寻集合字节:查找tast和test:grep -n 't[ae]st' regular_express.txt
反向选择^,取出不含g的oo:grep -n '[^g]oo' regular_express.txt
不包含小写的oo:grep -n '[^a-z]oo' regular_express.txt
grep -n '[^[:lower:]]oo' regular_express.txt
行首字节^,取出行首为小写字母的行:grep -n '^[a-z]' regular_express.txt
grep -n '^[[:lower:]]' regular_express.txt
行尾字节$,取出行尾为.的行:grep -n '\.$' regular_express.txt
cat -An regular_express.txt#显示所有字符,行号
去掉空白与注释行:grep -v '^$' /etc/syslog.conf | grep -v '^#'
一定有一个任意字符.:取出包含两个任意字符的gxxd:grep -n 'g..d' regular_express.txt
重复前一个字符0到无穷次:找出两个o及以上的字符串列出:grep -n 'ooo*' regular_express.txt
限定连续正则表达式的字符范围{}:找出两个o的字符串行:grep -n 'o\{2\}' regular_express.txt
找出两个o到5个o的字符串行:grep -n 'go\{2,5\}g' regular_express.txt
找出两个o及以上的字符串行:grep -n 'go\{2,\}g' regular_express.txt
找出文件中的属性为链接:ls -l /etc | grep '^l'
sed处理数据,替换删除,新增选取等
-n :列出经过sed 特殊处理的那一行
-e :直接在命令列模式上进行 sed 的动作编辑;
-i :直接修改读取的文件内容
a新增,c行替换,d删除,i插入,p打印,s替换。如1,20s/old/new/g
sed的动作使用单引号
如:将2-5行删除,默认增加了e选项:nl /etc/passwd | sed '2,5d'
删除第二行:nl /etc/passwd | sed '2d' 删除第二行到最后一行:nl /etc/passwd | sed '2,$d'
第二行后插入:nl /etc/passwd | sed '2a Drink tea or ......\ drink beer ?' 插入添加的新行用\表示。
第二行前插入:nl /etc/passwd | sed '2i Drink tea or ......\ drink beer ?' 插入添加的新行用\表示。
将二到五行取代为其他字符串No 2-5 number:nl /etc/passwd | sed '2,5c No 2-5 number'
列出文件中的五到七行:nl /etc/passwd | sed -n '5,7p'
取出文本中含有inet addr的部分并删除开头为.*addr:的部分:/sbin/ifconfig eth0 | grep 'inet addr' | \ sed 's/^.*addr://g'
取出文本中含有MAN的部分并删除注释行,空白行的部分:cat /etc/man_db.conf | grep 'MAN'| sed 's/#.*$//g' | sed '/^$/d'
修改文件中行尾为.的变为!:sed -i 's/\.$/\!/g' regular_express.txt
在文本行尾增加 # This is a test: sed -i '$a # This is a test' regular_express.txt
拓展正则表达式:
http://cn.linux.vbird.org/linux_basic/0330regularex_3.php
使用printf进行的格式化输出:
例如:printf '%s\t %s\t %s\t %s\t %s\t \n' $(cat printf.txt)
将ASCII对应的字符输出:printf '\x45\n'
awk数据处理工具,默认的分隔符为空格键或tab
执行方案为:awk '条件类型1{动作1} 条件类型2{动作2} ...' filename
使用awk工具显示第一列和第三列,$0代表所有列,$1第一列:last -n 5 | awk '{print $1 "\t" $3}'
执行步骤为:1每次读取一行,2判定,3执行操作,4进行后续行的判定和执行。
NF每行字段总数,NR正在处理第几行,FS分割字符为。
如显示每次处理的行号和字段总数:last -n 5| awk '{print $1 "\t lines: " NR "\t columns: " NF}'
显示,开始前就预设以冒号分隔,第三列的值小于10,则显示第1和第三列:cat /etc/passwd | awk 'BEGIN {FS=":"} $3 < 10 {print $1 "\t " $3}'
awk的花括号里面支持if语句。
文件对比工具diff
diff [-bBi] from-file to-file
如对比文件:diff passwd.old passwd.new
显示左边第x行被 删除 (d) 取代 (c) 掉,以右边文件第x行为基准的情况下。
对比目录:diff /etc/rc3.d/ /etc/rc5.d/
cmp对比两个文件内容,默认只显示第一个不同点:
例如:cmp passwd.old passwd.new
patch和diff配合,进行文件的升级和还原
制作文件差异补丁:diff -Naur passwd.old passwd.new > passwd.patch
-p为取消几层目录,如补丁文件和升级或还原文件在同一目录下则不需要取消目录。
-R文件恢复成为旧版本。
文件升级:patch -p0 < passwd.patch
文件还原:patch -R -p0 < passwd.patch
文件列印准备pr:
如 :pr /etc/man.config
增加了时间,文档名,页码信息...
别人的Linux私房菜(12)正则表达式与文件格式化处理的更多相关文章
- 别人的Linux私房菜(7)文件与目录管理
- 代表上一个工作目录 ~username代表用户所在的家目录 cd切换目录 配合之上的参数 . .. / ~ ~name (change directory) pwd显 ...
- 别人的Linux私房菜(9)文件与文件系统的压缩
www网站利用文件压缩技术进行数据传输,提升网络带宽. 压缩命令gzip与显示zcat.zmore.zless.zgrep -c将压缩的数据显示到屏幕上 -d解压缩 -v显示原文件/压缩文件的压缩比等 ...
- 别人的Linux私房菜(6)文件权限与目录配置
账号与一般身份用户存放在/etc/passwd文件中 个人密码存放在/etc/shadow文件中 Linux所有组名存放在/etc/group中 ls -al查看所有信息并显示权限等 文件权限的10字 ...
- 别人的Linux私房菜(17)进程管理与SELinux初探
程序在磁盘中,通过用户的执行触发.触发事件时,加载到内存,系统将它定义成进程,给予进程PID,根据触发的用户和属性,给予PID合适的权限. PID和登陆者的UID/GID有关.父进程衍生出来的进程为子 ...
- 别人的Linux私房菜(23)软件安装RPM、SRPM、YUM
RPM(RedHat Package Manager),不同Linux发行版发布的RPM文件甚至不同版本,不通用. SRPM为Source RPM,所提供的软件内容没有经过编译,格式为xxx.src. ...
- 别人的Linux私房菜(11)认识与学习BASH
Linux下使用BASH Bourne Again Shell 另外一种由用于Unix的伯克利大学的Bill Joy设计的C Shell 系统中合法的shell会写入到/etc/sh ...
- 别人的Linux私房菜(8)Linux磁盘与文件系统管理
虚拟机的磁盘通常为:/dev/vd[a-p] LVM和软件磁盘阵列 software RAID可以将一个分区格式化为多个文件系统或者多个分区格式化为一个文件系统. 索引式文件系统中:如ext2.ext ...
- 别人的Linux私房菜(22)软件安装:源代码与Tarball
执行make,会在当前目录查找makefile文本文件(记录了源代码如何编译的详细信息). 内核相关的函数信息放置在/usr/lib./usr/lib64里. 在Tarball(一般为xxx.tar. ...
- 别人的Linux私房菜(21)基础系统设置与备份策略
网络设置,手动设置IP,DHCP自动获取. 以太网协议开发出来的网卡ethN,N为数字. CentOS7对网卡命名的规则:eno代表由主板BIOS内建立的网卡,ens1由主板BIOS内建的PCI-E界 ...
随机推荐
- redis总结问题
简单回顾了redis,在这过程中 首先得了解redis是什么,redis的运用场景,redis支持哪些数据格式,redis如何操作数据,redis如何实现高可用 redis是什么: Redis 是一个 ...
- 一切为了解决隐私问题,绿洲实验室Ekiden协议介绍
绿洲实验室官网截图 下一代区块链平台的竞争已经悄然展开,每个月我们都能看到新成立的创业公司宣称,他们要采用区块链解决所有问题.大约80-90%的区块链项目,运行在像Ethereum这样的平台上. 创建 ...
- [UE4]Spacer
一.Spacer:留白占位控件 二.如下图所示,如果想要2个按钮都在容器右对齐: 三.可以放一个Spacer到最左边,设置成Fill,Spacer控件就是起到占位的作用.
- windows下安装Kettle
先下载kettle稳定版本https://community.hitachivantara.com/docs/DOC-1009855 下载后并且解压 安装kettle必须安装jdk在你的电脑上,ket ...
- k8s学习笔记之九: Service Account
第一章.前言 每一个用户对API资源进行操作都需要通经过以下三个步骤: 第一步:对客户端访问进行认证操作,确认是否具有访问k8s权限 token(共享秘钥) SSL(双向SSL认证) ....通过任何 ...
- tp5框架中jquery+ajax分页
jaxa分页,点击按钮直接替换数据, //php代码$page=Request::instance()->param("page"); $page = empty($page ...
- [译]与TensorFlow的第一次接触(三)之聚类
转自 [译]与TensorFlow的第一次接触(三)之聚类 2016.08.09 16:58* 字数 4316 阅读 7916评论 5喜欢 18 前一章节中介绍的线性回归是一种监督学习算法,我们使用数 ...
- mongodb安装及配置
下载安装篇 MongoDB 提供了 linux 各发行版本 64 位的安装包,你可以在官网下载安装包. 下载地址:https://www.mongodb.com/download-center#com ...
- MQ队列堵塞无法读取经验总结
问题现象: 1号发生本地来帐队列无法读取消息的问题,导致来帐报文均无法正常处理. 原因分析: 应用系统没有修改或上包,昨天交易和消息读取还是一切正常,mbfe的状态也是正常,mq的状态正常,以上正常可 ...
- python安装scrapy等库需要c++ 14.0 下载链接放这里
百度网盘下载地址:https://pan.baidu.com/s/1zZ7oKSuniABh1y7p0YahgA 或扫描二维码: