加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

文本工具和grep正则具体命令

发布时间:2020-12-14 06:11:35 所属栏目:百科 来源:网络整理
导读:文件查看命令 cat -E:显示行结束符$ -n:对显示出的每一行进行编号 -A:显示所有控制符 -b:非空行编号 -s:压缩连续的空行成一行 显示文本前或后行内容 head -c # 指定获取前#字节 -n # 指定获取前#行 -# 指定行数 tail -c # 指定获取后#字节 -n # 指定获
文件查看命令
cat

-E:显示行结束符$
-n:对显示出的每一行进行编号
-A:显示所有控制符
-b:非空行编号
-s:压缩连续的空行成一行


显示文本前或后行内容
head

-c # 指定获取前#字节
-n # 指定获取前#行
-# 指定行数
tail
-c # 指定获取后#字节
-n # 指定获取后#行
-# 同上
-f 跟踪显示文件fd新追加的内容,常用日志监控
相当于 --follow=descriptor
-F 跟踪文件名,相当于--follow=name --retry


按列抽取文本
cut

-d DELIMITER: 指明分隔符,默认tab
-f FILEDS:
#: 第#个字段
#,#[,#]:离散的多个字段,例如1,3,6
#-#:连续的多个字段,例如1-6
混合使用:1-3,7
-c 按字符切割

-----

收集文本统计数据
wc

-l 只计数行数
-w 只计数单词总数
-c 只计数字节总数
-m 只计数字符总数
-L 显示文件中最长行的长度


文本排序
sort

-r 执行反方向(由上至下)整理
-R 随机排序
-n 执行按数字大小整理
-f 选项忽略(fold)字符串中的字符大小写
-u 选项(独特,unique)删除输出中的重复行
-t c 选项使用c做为字段界定符
-k X 选项按照使用c字符分隔的X列来整理能够使用多次

uniq
-c: 显示每行重复出现的次数
-d: 仅显示重复过的行
-u: 仅显示不曾重复的行
注:连续且完全相同方为重复

常和sort 命令一起配合使用:
sort userlist.txt | uniq -c


文本检索过滤
grep

-v: 显示不被pattern匹配到的行
-i: 忽略字符大小写
-n:显示匹配的行号
-c: 统计匹配的行数
-o: 仅显示匹配到的字符串
-q: 静默模式,不输出任何信息
-A #: after,后#行
-B #: before,前#行
-C #:context,前后各#行
-e:实现多个选项间的逻辑or关系
grep –e ‘cat ’ -e ‘dog’ file
-w:匹配整个单词

基本正则表达式元字符
字符匹配:
. 匹配任意单个字符
[ ] 匹配指定范围内的任意单个字符,示例:[zhang] [0-9] [a-z] [a-zA-Z]
[^] 匹配指定范围外的任意单个字符
[:alnum:] 字母和数字
[:alpha:] 代表任何英文大小写字符,亦即 A-Z,a-z
[:lower:] 小写字母 [:upper:] 大写字母
[:blank:] 空白字符(空格和制表符)
[:space:] 水平和垂直的空白字符(比[:blank:]包含的范围广)
[:cntrl:] 不可打印的控制字符(退格、删除、警铃...)
[:digit:] 十进制数字 [:xdigit:]十六进制数字
[:graph:] 可打印的非空白字符
[:print:] 可打印字符
[:punct:] 标点符号


匹配次数:用在要指定次数的字符后面,用于指定前面的字符要出现的次数

****匹配前面的字符任意次,包括0次
贪婪模式:尽可能长的匹配
.
任意长度的任意字符
? 匹配其前面的字符0或1次
+ 匹配其前面的字符至少1次
{n} 匹配前面的字符n次
{m,n} 匹配前面的字符至少m次,至多n次
{,n} 匹配前面的字符至多n次
{n,} 匹配前面的字符至少n次


位置锚定:定位出现的位置
^ 行首锚定,用于模式的最左侧
$ 行尾锚定,用于模式的最右侧
^PATTERN$ 用于模式匹配整行
^$ 空行
^[[:space:]]*$ 空白行
&; 或 b 词首锚定,用于单词模式的左侧
&; 或 b 词尾锚定,用于单词模式的右侧
&;PATTERN&; 匹配整个单词


分组:() 将一个或多个字符捆绑在一起,当作一个整体处理,如:(root)+

分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些变量的命名方式为: 1,2,3,...

1 表示从左侧起第一个左括号以及与之匹配右括号之间的模式所匹配到的字符
示例: (string1+(string2))
1 :string1+(string2)

2 :string2

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

或者:|
示例:a|b: a或b C|cat: C或cat (C|c)at:Cat或cat


扩展正则
egrep

字符匹配
. 任意单个字符
[ ] 指定范围的字符
[^] 不在指定范围的字符

次数匹配:
*** 匹配前面字符任意次
? 0或1次
+ ** 1次或多次
{m} 匹配m次
{m,n} 至少m,至多n次


位置锚定:^ 行首$ 行尾&;,b 语首&;,b 语尾分组:()后向引用:1,...或者:a|b a或bC|cat C或cat(C|c)at Cat或cat

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读