shell脚本基础和grep文本处理工具企业应用4
文本处理工具:
egrep:
支持扩展的正则表达式实现类似于grep文本过滤功能:grep -E
egrep [OPTIONS] PATTERN [FILE...]
egrep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]
选项:
-i,-o,-v,-q,-A,-B,-C
-G:支持基本正则表达式
扩展正则表达式的元字符:
字符匹配
.:任意单个字符
[]:指定范围内的任意单个字符
[^]:指定范围外的任意单个字符
次数匹配
*:任意次,0,1或多次
?: 0次或1次,即其前的字符是可有可无的
+:其前的字符至少1次
{m}:其前的字符m次
{m,n}:至少m次,至多n次
{0,n}:至多n次
{m,}:至少m次
位置锚定
^:行首锚定
$:行尾锚定
\<,\b:词首锚定
\>,\b:词尾锚定
分组及引用
():分组,括号内的模式匹配到的字符也会被记录于正则表达式引擎的内部变量中
后向引用:\1,\2,\3,...
或
a|b:a或者b
C|cat:C或者cat
(C|c)at:Cat或者cat
fgrep:不支持正则表达式元字符
当无需要用到元字符去编写模式时,使用fgrep必能更好,性能强
文本查看及处理工具:wc,cut,sort,uniq,diff,patch
wc:word count
wc [OPTION]... [FILE]...
-l:lines
-w:words
-c:bytes
cut:remove sections from each line of files
cut OPTION... [FILE]...
-d CHAR:以指定的字符为分隔符;后边可以直接跟选项参数,而不要空格
-f FIELDS:挑选出的字段
#:指定的单个字段
#-#:指定连续的多个字段
#,#:指定离散的多个字段
sort:sort lines of text files
sort [OPTION]... [FILE]...
-n:基于数值大小而非字符进行排序
-t CHAR:指定分隔符
-k #:用于排序比较的字段
-r:逆序排序
-f:忽略大小写
-u:重复的行只保留一份
重复行指连续且相同的数据
uniq:report or omit repeated lines 报告或移除重复的行
uniq [OPTION]... [INPUT [OUTPUT]]
-c:显示每行的重复次数
-u:仅显示未曾重复过的行
-d:仅显示重复过的行
diff:compare files line by line 逐行比较文件的不同
diff [OPTION]... FILES
生成打补丁的文件,为下边的patch命令打补丁用
diff /PATH/TO/OLDFILE /PATH/TO/NEWFILE > /PATH/TO/PATCH_FILE
-u:使用unfled机制,即显示要修改的行的上下文,默认为3行
patch:向文件打补丁
patch [-blNR][ -c| -e| -n][-d dir][-D define][-i patchfile] [-o outfile][-p num][-r rejectfile][file]
patch [OPTIONS] -i /PATH/TO/PATCH_FILE /PATH/TO/OLDFILE
patch /PATH/TO/OLDFILE < /PATH/TO/PATCH_FILE