标签:rom name 补丁 空行 正则 att block lis 使用
正则表达式:Regual Expression, REGEXP。
由一类特殊字符及文本字符所编写的模式,其中有些字符不表示其字面意义,而是用于表示控制或通配的功能;
基本正则表达式:BRE
扩展正则表达式:ERE
1.1 字符匹配:
1.2 匹配次数:用在要指定次数的字符后面,用于指定前面的字符要出现的次数;
1.3 位置锚定:定位要锚定的字符出现的位置
1.4 分组及引用:\(\) 将一个或多个字符捆绑在一起,当做一个整体进行处理;如\(root\)\+,表示将root分为一组,且匹配至少1次
\1:模式从左侧起,第一个左括号以及与之匹配的右括号之间的模式所匹配到的字符;
\2:模式从左侧起,第二个左括号以及与之匹配的右括号之间的模式所匹配到的字符;
\3:
示例:\(string1\+\(string2\)\)
\1:(string1+(string2))
\2:(string2)
或者:|
示例:
a|b :a或b
C | cat:C或cat
(C|c)at:Cat或cat
grep:Global search REgular expression and Print out the line.
作用:文本搜索工具,根据用户指定的“模式(过滤条件)”对目标文本逐行进行匹配检查;打印匹配到的行;
模式:由正则表达式字符及文本字符所编写的过滤条件
grep [OPTIONS] PATTERN [FILE...]
grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]
# option:
--color=auto:对匹配到的文本着色后高亮显示;
-i:ignorecase,忽略字符的大小写;
-o:仅显示匹配到的字符串本身;
-w:显示匹配到的整个单词
-v, --invert-match:显示不能被模式匹配到的行;
-e:实现多个选项间的逻辑or关系
-n:显示匹配的行号
-c: 统计匹配的行数
-E:支持使用扩展的正则表达式元字符;
-q, --quiet, --silent:静默模式,即不输出任何信息;
-A 5:after, 后5行
-B 5:before,前5行
-C 5:context,前后各5行
wc - print newline, word, and byte counts for each file
wc [OPTION]... [FILE]...
~]# wc anaconda-ks.cfg
66 167 1858 anaconda-ks.cfg
# 66:表示行数
# 167:表示字数
# 1858:字节数
# option
-l:只计数行数
-w:只计算单词总数
-c:只计数字节总数
-m:只计数字符总数
cut OPTION... [FILE]...
# option:
-d --delimiter=DELIM : 指明分隔符,默认tab
-f --fields=LIST :
# :指定第#个字段
#-#:指定第#-#个字段;如3-5,第3-5个字段
#,#:指定离散的多个字段;如3,5,7
#,#-#:
把整理过的文本显示在STDOUT,不改变原始文件
sort [OPTION]... [FILE]...
# option:
-n:基于数值大小而非字符进行排序;
-r:逆序排序;
-f:忽略字符大小写
-t CHAR:指定分隔符; (类似cut的-d命令)
-k #:用于排序比较的字段;(类似cut -f 命令)
-u:连续且相同的重复的行只保留一行;
报告或移除重复的行
uniq [OPTION]... [INPUT [OUTPUT]]
# option
-c:显示每行的重复次数;
-u:仅显示未曾重复过的行;
-d:仅显示重复过的的行;
# 常和sort一起使用:
sort userlist.txt | uniq-c
diff - compare files line by line
patch - apply changes to files
diff [OPTION]... FILES
diff /PATH/TO/OLDFILE /PATH/TO/NEWFILE > /PATH/TO/PATCH_FILE
-u:使用unfied机制,即显示要修改的行的上下文,默认为3行,适用于补丁文件;
###
patch:复制在其它文件中进行的改变(要谨慎使用),即向文件打补丁;
patch [OPTIONS] -i /PATH/TO/PATCH_FILE /PATH/TO/OLDFILE
patch /PATH/TO/OLDFILE < /PATH/TO/PATCH_FILE
-b:自动备份改变了的文件
cat - concatenate files and print on the standard output
cat [OPTION]... [FILE]...
# option:
-E: 显示行结束符$
-n: 对显示出的每一行进行编号
-A:显示所有控制符
-s:压缩连续的空行成一行
###
tac - concatenate and print files in reverse (反向显示cat的输出结果)
tac [OPTION]... [FILE]...
###
rev - reverse lines of a file or files
rev [options] [file ...]
分页查看文件内容
head - output the first part of files 默认显示前10行
tail - output the last part of files 默认显示后10行
head [OPTION]... [FILE]...
# option:
-n #: 指定获取前#行
-c #: 指定获取前#字节
-#:指定行数
###
tail [OPTION]... [FILE]...
# option:
-n #: 指定获取后#行
-c #: 指定获取后#字节
-#:指定行数
-f: 跟踪显示文件fd新追加的内容,常用日志监控;相当于--follow=descriptor
-F: 跟踪文件名,相当于—follow=name --retry
1、显示/etc/passwd文件中不以/bin/bash结尾的行;
~]# grep -v "/bin/bash$" /etc/passwd
2、找出/etc/passwd文件中的两位数或三位数;
~]# grep "<[0-9]{2,3}>" /etc/passwd
3、找出/etc/rc.d/rc.sysinit或/etc/grub2.cfg文件中,以至少一个空白字符开头,且后面非空白字符的行;
~]# grep "^[[:space:]]+[^[:space:]]" /etc/grub2.cfg
4、找出"netstat -tan"命令的结果中以‘LISTEN‘后跟0、1或多个空白字符结尾的行;
~]# netstat -tan | grep "LISTEN[[:space:]]*$"
1、找出/proc/meminfo文件中,所有以大写或小写S开头的行;至少有三种实现方式;
~]# grep -i "^s" /proc/meminfo
~]# grep "^[sS]" /proc/meminfo
~]# grep -E "^(s|S)" /proc/meminfo
2、显示肖前系统上root、centos或user1用户的相关信息;
~]# grep -E "^(root|centos|user1)>" /etc/passwd
3、找出/etc/rc.d/init.d/functions文件中某单词后面跟一个小括号的行;
~]# grep -E -o "[_[:alnum:]]+()" /etc/rc.d/init.d/functions
4、使用echo命令输出一绝对路径,使用egrep取出基名;
~]# echo /etc/sysconfig/ | grep -E -o "[^/]+/?$"
进一步:取出其路径名;类似于对其执行dirname命令的结果;
5、找出ifconfig命令结果中的1-255之间的数值;
~]# ifconfig | grep -E -o "<([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])>"
6、课外作业:找出ifconfig命令结果中的IP地址;
~]# ifconfig | grep -o "([0-9]{1,3}.){3}[0-9]{1,3}" --color=auto
7、添加用户bash, testbash, basher以及nologin(其shell为/sbin/nologin);而后找出/etc/passwd文件中用户名同shell名的行;
~]# grep -E "^([^:]+>).*\1$" /etc/passwd
标签:rom name 补丁 空行 正则 att block lis 使用
原文地址:https://www.cnblogs.com/sstjustdoit/p/9995534.html