您的位置:首页 > 运维架构 > Shell

学习文本处理整理与常见的符号作用(shell 通配符 正则)

2019-05-26 11:15 309 查看

一、符号整理

符号 作用
# 注释
> 输出重定向
>> 输出追加重定向
< 输入重定向
<< 追加输入重定向
\ 转义字符
. 一个单字符(当前目录)
上级目录
~ 当前用户家目录
/ 根目录(在中间使用表示路径)
~ 用户根目录(用户登录时所在的目录)
`` $() 引用命令被执行后的结果
$ 以***结尾(正则)变量替换的代表符号。
^ 以***开头(正则)
^$ 表示空行
* 匹配任何字符,、文本、空;(0个或多个)
* .* 任意长度字符
^.* 以任意多个字符串开头,.*有多少算多少,贪婪模式
任何一个字符,(a?b:之间只能有一个字符)
& 让程序或脚本切换到后台执行
&& 并且 同时成立
[abc] 表示这个范围内的任何一个字符(正则,通配符)
{1…100} 产生一个序列,以点分割且,不能有空格(通配符)
[^abc] [!abc]匹配指定范围外的任意一个字符
() 分组将一个或多个字符绑在一起当做一个整体
(str1,str2,…) 匹配str1或str2(或等)其中的一个字符串
‘’ 单引号转移,比较傻瓜其内部所有shell命令、通配符。全部不会被使用
“” 双引号转移,允许出现特定的命令
`` 反单引号转移,引号内都被视为命令执行

正则元字符补充:

|			管道符,或者(正则)
||			逻辑符号,代表与
&&			逻辑符号,代表或
[:alnum:]	字母和数字
[:alpha:]  	代表任何英文大小写字符,亦即 A-Z, a-z
[:lower:] 	小写字母
[:upper:]	大写字母
[:blank:]  	水平空白字符(空格和制表符)
[:space:] 	所有水平和垂直的空白字符(比[:blank:]包含的范围广)
[:cntrl:]	不可打印的控制字符(退格、删除、警铃...)
[:digit:] 	十进制数字
[:graph:] 	可打印的非空白字符
[:print:] 	可打印字符
[:punct:] 	标点符号
[:xdigit:] 	十六进制数字

二、文本处理三剑客之 grep
1、grep介绍:

作用:文本搜索工具,根据用户指定的“模式”对目标文本逐行进行
匹配检查;打印匹配到的行
模式:由正则表达式字符及文本字符所编写的过滤条件
grep [OPTIONS] PATTERN [FILE...]
grep root /etc/passwd
grep "$USER" /etc/passwd
grep '$USER' /etc/passwd
grep `whoami` /etc/passwd

2、grep命令选项

--color=auto:	对匹配到的文本着色显示
-m #	匹配#次后停止
-v		显示不被pattern匹配到的行
-i  	忽略字符大小写
-n  	显示匹配的行号
-c		统计匹配的行数
-o 		仅显示匹配到的字符串
-q  	静默模式,不输出任何信息
-e  	实现多个选项间的逻辑or关系
grep –e ‘cat ’ -e ‘dog’ file
-w  	匹配整个单词
-E  	使用ERE
-F  	相当于fgrep,不支持正则表达式
-f file 根据模式文件处理
-A # after, 后#行
-B # before, 前#行
-C # context, 前后各#行

三、文本处理三剑客之 sedsed介绍

sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,
称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,
把缓冲区的内容送往屏幕。然后读入下行,执行下一个循环。如果没有使诸如‘D’ 的特殊命令,
那会在两个循环之间清空模式空间,但不会清空保留空间。这样不断重复,直到文件末尾。
文件内容并没有改变,除非你使用重定向存储输出。
功能:主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序等

二、sed用法

sed [option]... 'script' inputfile

1、常用命令选项

-n 	不输出模式空间内容到屏幕,即不自动打印
-e 	多点编辑
-r 	支持使用扩展正则表达式
-i.bak 备份文件并原处编辑
-f /PATH/SCRIPT_FILE: 从指定文件中读取编辑脚本

2、地址命令

script 地址命令
对指定行号处理,默不指定,则处理所有行
单地址:
#: 指定的行,$:最后一行
/pattern/:被此处模式所能够匹配到的每一行
地址范围:
#,#
#,+#
/pat1/,/pat2/
`#,/pat1/
~:步进
1~2 奇数行
2~2 偶数行

三、编辑命令

d 	删除模式空间匹配的行,并立即启用下一轮循环
p 	打印当前模式空间内容,追加到默认输出之后
= 	为模式空间中的行打印行号
! 	模式空间中匹配行取反处理
s///:	查找替换,支持使用其它分隔符,s@@@,s###
a [\]text1 	在指定行后面追加文本,支持使用\n实现多行追加
i [\]text 	在行前面插入文本
c [\]text 	替换行为单行或多行文本
w /path/somefile 	保存模式匹配的行至指定文件
r /path/somefile 	读取指定文件的文本至模式空间中匹配到的行后
替换标记:
g 	行内全局替换
p 	显示替换成功的行
w /PATH/TO/SOMEFILE 将替换成功的行保存至文件中
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: