一、命令介绍
1. cat
连接文件并打印到标准输出设备上,cat经常用来显示文件的内容。注意:当文件较大时,文本在屏幕上迅速闪过(滚屏),用户往往看不清所显示的内容。因此,一般用more等命令分屏显示。为了控制滚屏,可以按Ctrl+S键,停止滚屏;按Ctrl+Q键可以恢复滚屏。按Ctrl+C(中断)键可以终止该命令的执行,并且返回Shell提示符状态。
cat(选项)(参数)
-n或-number:有1开始对所有输出的行数编号;
-b或--number-nonblank:和-n相似,只不过对于空白行不编号;
-s或--squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行;
-A:显示不可打印字符,行尾显示“$”;
-e:等价于"-vE"选项;
-t:等价于"-vT"选项;
示例:
ml和m2是当前目录下的两个文件
cat m1 (在屏幕上显示文件ml的内容)
cat m1 m2 (同时显示文件ml和m2的内容)
cat m1 m2 > file (将文件ml和m2合并后放入文件file中)
2. grep
(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
-a 不要忽略二进制数据。
-A<显示列数> 除了显示符合范本样式的那一行之外,并显示该行之后的内容。
-b 在显示符合范本样式的那一行之外,并显示该行之前的内容。
-c 计算符合范本样式的列数。
-C<显示列数>或-<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之前后的内容。
-d<进行动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作。
-e<范本样式> 指定字符串作为查找文件内容的范本样式。
-E 将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式。
-f<范本文件> 指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式。
-F 将范本样式视为固定字符串的列表。
-G 将范本样式视为普通的表示法来使用。
-h 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。
-H 在显示符合范本样式的那一列之前,标示该列的文件名称。
-i 忽略字符大小写的差别。
-l 列出文件内容符合指定的范本样式的文件名称。
-L 列出文件内容不符合指定的范本样式的文件名称。
-n 在显示符合范本样式的那一列之前,标示出该列的编号。
-q 不显示任何信息。
-R/-r 此参数的效果和指定“-d recurse”参数相同。
-s 不显示错误信息。
-v 反转查找。
-w 只显示全字符合的列。
-x 只显示全列符合的列。
-y 此参数效果跟“-i”相同。
-o 只输出文件中匹配到的部分。
- 在文件中搜索一个单词,命令会返回一个包含“match_pattern”的文本行:
grep match_pattern file_name
grep "match_pattern" file_name
- 在多个文件中查找:
grep "match_pattern" file_1 file_2 file_3 ...
- 输出除之外的所有行 -v 选项:
grep -v "match_pattern" file_name
- 标记匹配颜色 –color=auto 选项:
grep "match_pattern" file_name --color=auto
- 使用正则表达式 -E 选项:
grep -E "[1-9]+" 或
egrep "[1-9]+"
- 只输出文件中匹配到的部分 -o 选项:
echo this is a test line. | grep -o -E "[a-z]+\."
line.
echo this is a test line. | egrep -o "[a-z]+\."
line.
- 统计文件或者文本中包含匹配字符串的行数 -c 选项:
grep -c "text" file_name
- 输出包含匹配字符串的行数 -n 选项:
grep "text" -n file_name 或 cat file_name | grep "text" -n
#多个文件
grep "text" -n file_1 file_2
- 打印样式匹配所位于的字符或字节偏移:
echo gun is not unix | grep -b -o "not"
7:not
- 在多级目录中对文本进行递归搜索:
grep "text" . -r -n
.表示当前目录。
忽略匹配样式中的字符大小写:
echo “hello world” | grep -i “HELLO”
hello
选项 -e 制动多个匹配样式:
echo this is a text line | grep -e “is” -e “line” -o
is
line
3. more
是一个基于vi编辑器文本过滤器,它以全屏幕的方式按页显示文本文件的内容,支持vi中的关键字定位操作。
常用快捷键:
Space:显示文本的下一屏内容。
Enier:显示文本的下一行内容。
斜线符|:接着输入一个模式,可以在文本中寻找下一个相匹配的模式。
H:显示帮助屏,该屏上有相关的帮助信息。
B:显示上一屏内容。
Q:退出more命令。
more(语法)(参数)
-<数字>:指定每屏显示的行数;
-d:显示“[press space to continue,'q' to quit.]”和“[Press 'h' for instructions]”;
-c:不进行滚屏操作。每次刷新这个屏幕;
-s:将多个空行压缩成一行显示;
-u:禁止下划线;
+<数字>:从指定数字的行开始显示。
示例:
- 显示文件file的内容,但在显示之前先清屏,并且在屏幕的最下方显示完成的百分比。
more -dc file
- 显示文件file的内容,每10行显示一次,而且在显示之前先清屏。
more -c -10 file
4. less
more十分相似,都可以用来浏览文字档案的内容,不同的是less命令允许用户向前或向后浏览文件,而more命令只能向前浏览。用less命令显示文件时,用
常用快捷键:
PageUp:向上翻页
PageDown:向下翻页
d:向后翻半页
u:向前翻半页
q:退出less程序
less(选项)(参数)
-e:文件内容显示完毕后,自动退出;
-f:强制显示文件;
-g:不加亮显示搜索到的所有关键词,仅显示当前显示的关键字,以提高显示速度;
-l:搜索时忽略大小写的差异;
-N:每一行行首显示行号;
-s:将连续多个空行压缩成一行显示;
-S:在单行显示较长的内容,而不换行显示;
-x<数字>:将TAB字符显示为指定个数的空格字符。
二、日常使用
1. 输出所有有该字符的行
cat file |grep "aaa"
示例:统计a.log中”输出数据”出现次数
cat a.log |grep "输出数据"
2. 存在该字符的行的行数
cat file |grep -c "aaa"
示例:统计a.log中”输出数据”出现次数
cat a.log |grep -c "输出数据"
3. 统计某个字符出现次数
grep -o '55043824587797' filename | wc -l
示例:统计agewhitelist.properties中+出现次数
grep -o '+' agewhitelist.properties | wc -l
116792
4. 显示某字符出现附近内容
cat file |grep -10 "aaa"
示例:显示a.log中出现“userid=4881176591622”附近10行命令
#显示匹配行上下各5行
cat a.log |grep -10 "userid=4881176591622"
#显示匹配行下10行
cat a.log |grep -A 10 "userid=4881176591622"
#显示匹配行上10行
cat a.log |grep -B 10 "userid=4881176591622"
5. 显示匹配的前n行
cat file |grep -10 "aaa"|head -10
示例:显示a.log中前10次出现“userid=4881176591622”附近10行
cat a.log |grep -10 "userid=4881176591622" |head -10
6. 批量杀掉进程
ps -ef | grep firefox | grep -v grep | cut -c 9-15 | xargs kill -9
说明:
列出了当前主机中运行的进程中包含firefox关键字的进程
ps -ef | grep firefox | grep -v grep
截取第9至15字符(进程id),列出了要kill掉这些进程的id,并将之打印在了屏幕上
ps -ef | grep firefox | grep -v grep | cut -c 9-15
后面加上’xargs kill -9’后,则执行这些命令,进而杀掉了这些进程
ps -ef | grep firefox | grep -v grep | cut -c 9-15 | xargs kill -9
6. 查看当前文件夹及子文件夹大小
du -h --max-depth=1 .