linux温故知新七

文本处理、正则表达式、cut、grep、egrep、fgrep

Linux中文本处理工具最常用的就是文本处理三剑客grep、sed、awk再配合正则表达式,可以实现足够多的文本处理功能。工具的强大之处是因为使用它的人,如何才能发挥文本处理工具的作用呢?答案就是正则表达式,其实正则表达式,只是一种思想,一种表示方法,只要我们使用的工具支持表示这种思想那么这个工具就可以处理正则表达式的字符串。这部分内容可以说是学习shell脚本之前必学的内容,理解越深刻那么shell脚本编写能力就会越强。

文本处理

文本查看工具

cat -n(包含了$回车符),-b,-A(-vTE),-e(-vE),-v(有^M无^T),-s,-E(回车)

tac -n,-b,-A(-vTE),-e(-vE),-v(有^M无^T),-s,-E(回车)

rev

more -d(加提示),只能下翻,能命令

less PgUP翻页,能搜,能命令

head -n 前几行,默认10行

tail -n 后几行,默认10行,-f /var/log/messages前端监控日志,tail -n 0 -f

/var/log/message &后端显示新日志,不影响使用,fg 1切换前台,ctrl c终止

cut

cut -d: -f1-5,6,7 /etc/passwd # : 号截取,第几段 –output-delimiter=+ # 替换分隔符

cut -c44-46 file #字符截取,监控磁盘

paste 横向合并两个文件

paste -d: #指定横向分隔的符号,默认Tab

paste -s #一个文件的内容合并成一行显示

wc (word count) #字符收集统计数据

wc file #行、单词、字节

wc -m #统计字符数

wc -l #统计行数

wc -w #统计以标点或space隔开的单词数

wc -c #统计字节数

wc 输入字符,最后输入空格开的被统计字符,再ctrl d

sort #文本排序

sort -t ‘.’ #使用 . 做为字段界定符

sort -r #反序

sort -f #忽略字符串中的大小写

sort -n #按数字排序

sort -u #去除重复行

sort -k3 #按 . 分隔符根据第3列来整理,可重复多次

sort -ut ‘.’ -k3 #按 . 分隔符根据第3列来整理并归类,去除不属于该类的行

uniq #从输入中山城重复的前后相接的行

uniq file #合并相邻的重复行

uniq -c file #显示合并的重复次数

uniq -d file #只显示重复的行

uniq -u file #显示不重复的行

diff #比较两个文件之间的区别

diff xx yy

diff -c xx yy

其中1-3表示行号c表示不同,常用的a表示多余的行,d表示删除的行,即少的行,<表示第一个文件,>表示第二个文件。。diff -c 会以上下文的形式显示两个文件的不同之处,文件时间不同也会进行比较,行中不同的地方会在此行前加”!”:

diff -u #选项来输出“统一的(unified)”diff格式文件,最适用于补丁文件

patch #复制对文件改变

patch -b #自动备份改变了的文

diff -u xx yy>zz.patch

patch -b xx zz.patch

grep:global serarch REgular expressin and print out the line

grep -E = egrep、grep -F fgrep(不支持正则表达式)

.bashrc加入alias grep=’grep –color=auto’

grep xxxx /etc/passwd /etc/group …. 在centos7上带颜色

grep ‘$USER’ / “$USER” / whoami /etc/passwd

grep -v string #显示不包含string的行,排除

grep -i String #忽略大小写

grep -n string #显示包含string的行号

grep -c string #统计string的行数

grep -o strng #仅显示string,配合正则表达式,精确匹配

grep -q string #静默模式,echo $?看看返回值

grep -A3 string #显示string与string后面(After)3行,可作为string辅助过滤,

grep -C3 #string前后的3行

grep -e ‘root’ -e ‘sbin’ file #实现多个选项的逻辑或关系,类似正则中’root|sbin’

grep -w string #完全匹配string,匹配单词,以标点符号或者空格Tab分隔,类似正则中\bstring\b或\<string\>,具有同等效果,但这是不同的概念,必须加以区分

grep -E = egrep #使用扩展的正则表达式

标准的正则表达式

由一类特殊字符及文本字符编写的模式,这些字符有控制或匹配的功能

man 7 regex #看正则表达式

程序支持grep、vim、less、nginx

匹配次数

grep r.t #匹配任意单个字符

grep r[a-z]t #匹配任一指定范围内的任一个字符,如[aBc]表示匹配a或B或c

grep r[^[1-7]]t #不在指定范围内的任一个字符

[:alpha:]、[:digital:]、[:alnum:]、[:punct:]、[:space:]、[:lower:]、[:upper:]

\* # *号前的字符重复任意次数,尽可能长匹配

.* # 任意长度的字符\? #前面的字符0次或1次,有和没有都会匹配

\+ #前面的字符至少1次

\{n\} #n次

\{m,n\} #至少m次,至多n次

\{,n\} #至多n次

\{m,\} #至少m次

位置锚定

^ #句子的行首锚定

$ #句子的行尾锚定

^\$ 空行锚定,用cat-A看到的号表示换行,^I表示Tab

grep -v “^ *\$” #不显示以空格开头的空行

grep -v “^[[:space:]]*$” #不显示以空格和Tab开头的空行

grep ‘\bstr’ 或 ‘\<str’ #str开头单词的词首锚定

grep ‘st\b’ 或 ‘\>str’ #str结尾单词的词尾锚定

\<string\> #匹配整个单词

分组

\(\):将一个或多个字符捆绑在一起,当作一个整体进行处理,如:(root)+分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些变量的命名方式为:\1, \2, \3, …

\1: 从左侧起,第一个左括号以及与之匹配右括号之间的模式所匹配到的字符

实例`:(string1+(string2)*)

\1: string1+(string2)*

\2: string2

后向引用:引用前面的分组括号中的模式所匹配字符(而非模式本身)

逻辑或

‘(root|bash)’ #匹配root或bash

‘\(ba|c\)sh’ #匹配bash或csh

egrep及扩展的正则表达式,省略了转义符

egrep = grep -E #可使用扩展的正则表达式

字符匹配: . [] [^]

次数匹配: * ? + {n} {m,n}

位置锚定: ^ $ \< \> \b

分组: (``) 后向引用:\1,\2...

逻辑或: (a|b) (a|b)c

+ 与 * 的区别:* 匹配的是零次或者多次,被重复的内容可能并不会出现;+ 至少出现一次如ca+t会匹配cat和caaat,但不会匹配ct

注意:使用grep -E或者egrep时不要添加上述符号的转义符

时间: 2024-12-28 16:13:26

linux温故知新七的相关文章

linux &nbsp; 第七章 磁盘和文件系统管理(一)

linux 第七章磁盘和文件系统管理(一) 享受生活 热爱挑战 明远分享 每章一句话: 在别人光鲜的背后有着太多太多,别人不知道的痛苦,自己不喜欢的人,以微笑面对,默默地为他祝福:对于喜欢的人,真情流露,真诚相待.人在做天在看,冥冥中自有因果安排,永远保持一颗善良的心,持续做对的事情,不断地提醒自己,低调做人,高调做事. 要求:    跟着做一下吧 看不清图片就点一下图片 一,关机后添加一块20GB的SCSI磁盘,重新开机进入RHEL 5系统 二,分区并格式化 1, 使用fdisk命令对新硬盘进

Linux第七节随笔

linux第七讲(上)1.diff http://www.cnblogs.com/peida/archive/2012/12/12/2814048.html 作用:diff命令能比较单个文件或者目录内容.如果指定比较的是文件,则只有当输入为文本文件时才有效.以逐行的方式,比较文本文件的异同处. 如果指定比较的是目录的的时候,diff 命令会比较两个目录下名字相同的文本文件.列出不同的二进制文件.公共子目录和只在一个目录出现的文件. 参数:-a或--text diff预设只会逐行比较文本文件. -

Linux 第七周上课笔记系统分区管理,lvm管理

一.diff命令 difffile file1        ##比较两个文件的不同 -c                    ##显示周围的行 -u                    ##按照一个格式统一输出生成补丁 -r                    ##比较两个目录中文件的不同 patchfile file.path   ##打补丁 -b                    ##备份文件 二.grep过滤命令 grep关键字文件|目录##在文件或目录中查找含有关键字的行 -

Linux 第七周实验 及总结

姬梦馨 原创作品 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 第七周 Linux内核如何装载和启动一个可执行程序 一:1.可执行程序如何产生的? linux系统中,可执行程序一般要经过预处理.编译.汇编.链接.执行等步骤. 编译过程 预处理:gcc –E hello.c –o hello.i; gcc –E调用cpp 生成中间文件 编 译:gcc –S hello.i –o hello.s; gcc –S调

linux 第七周 总结及实验

姬梦馨 原创作品 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 第七周 Linux内核如何装载和启动一个可执行程序 一:1.可执行程序如何产生的? linux系统中,可执行程序一般要经过预处理.编译.汇编.链接.执行等步骤. 编译过程 预处理:gcc –E hello.c –o hello.i; gcc –E调用cpp 生成中间文件 编 译:gcc –S hello.i –o hello.s; gcc –S调

OpenStack —— 网络进阶Linux Bridge(七)

一.配置Linux Bridge Neutron默认使用ML2作为core plugin,其配置位于/etc/neutron/neutron.conf,控制节点和计算节点都需要在各自的neutron.conf 中配置core_plugin选项. 然后需要让ML2使用linux-bridge mechanism driver,ML2的配置文件位于/etc/neutron/plugins/ml2/ml2_conf.ini. [ml2] # ... mechanism_drivers = linuxb

马哥Linux第七周课程作业

1.创建一个10G分区,并格式为ext4文件系统: (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl: # 创建10G分区 [[email protected] ~]# fdisk /dev/sdb 命令(输入 m 获取帮助):n   Partition type:    p   primary (0 primary, 0 extended, 4 free)    e   extended Select (default p): p 分

linux笔记七---------管道

smarty的变量调节器就是linux的管道 管道:前者的输出是后者的输入 {$name|upper}   通过调节器使得名字变为大写输出 {$name|lower} linux的管道: ls –al  |  wc  //查看当前目录下一共的文件数目 递归使用管道 ls  -al |  grep  shuhua  | wc   //查看当前目录下shuhua主人拥有多少文件

马哥linux第七周作业

1.创建一个10G分区,并格式为ext4文件系统: (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl: (2) 挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳: [[email protected] tmp]# fdisk /dev/sda          WARNING: DOS-compatible mode is deprecated. It's strongly recommended