一、文本统计:wc——word count
1、显示文件行数、单词数(空格分隔单词)、字节数和文件名:wc 文件名
2:文件行数 4:单词数(空格隔开为一个单词) 10:字节数(数的话有8个,但隐藏两个换行符也占字节)
①Cat -A 查看隐藏字符 (换行符$)
②###在UTF-8编码格式里面,显示时一个字符占一个字节,一个中文字占用3个字节。(不建议文件中写中文)
、
2、只显示单词数:wc -w 文件名
3、只显示字节数:wc -c 文件名
4、只显示行数:wc -l 文件名
5、只显示字符数:wc -m 文件名
6、显示最长的一行的字符数(不包括断行符):wc -L 文件名
二、直接查看文件内容
1、 cat连接并显示文件内容到标准输出((若文件没有则错误输出))
①显示文件内容并显示行号:cat -n 文件名
②显示文件内容及隐藏内容:cat -A 文件名
③黑洞机制(shell脚本里面经常用):将文件内容重定向到/dev/null。( 常用于测试文件是否存在并不需要显示文本内容)
cat 文件 > /dev/null //不带任何选项时,从标准输入接收输出到标准输出
(文件若存在将文本内容输入到黑洞中;文件不存在则错误输出,不会将文本内容输入到黑洞中)
cat 文件 2> /dev/null //文件若存在不会将文本输入到黑洞中;文件不存在则将标准错误输出输入到黑洞中
2、逆序显示文件:tac
3、从头开始逐行查看:more /var/log/messages
①在没有翻到最后一屏时支持向前翻,翻到最后一页后会退出。
②b:一页一页往前翻
③空格键或回车键:往后翻(空格一页一页往后翻)
4、 前后查看文件内容:less /var/log/messages
①上下方向键:一行一行翻
②空格键:一页一页翻
③退出进程:q
(man手册查看命令用法默认用less打开)
5、默认查看文件前10行:head /etc/passwd
指定查看前5行:head -5 /etc/passwd
6、 默查看后10行:tail /etc/passwd
查看后5行:tail -5 /etc/passwd (数字可变)
查看动态变化的后十行:tail -f /var/log/messages
(该文件内容是处于动态变化的,在实时更新,-f可追踪最新内容)
三、对文件数据内容进行处理之后显示
1、文本切割显示:(原文件内容不变,只是切割显示出结果)
cut -d 指定分隔符 -f 指定第几列 被切割文件
①-f 1,3第一个字段(列)和第三个字段(列)
②-f 1-3 第一个字段(列)到第三个字段(列)
③-c 1-4 切出第一到第四个字符
(指定分隔符的时候空格需要用单引号或双引号引起来)
-c 4 切出第四个字符
④cut -d : -f 1-3 --output-delimiter=@ /etc/passwd
(把1,3字段--列切出来,中间用@隔开)
⑤cut -d : -f 1-3 --output-delimiter=” ” /etc/passwd
把1,3字段--列切出来,中间用空格隔开(双引号里添加分隔符)
⑥cut -d : -f 1-3 --output-delimiter=‘ ’ /etc/passwd
把1,3字段--列切出来,中间用空格隔开(单引号里添加分隔符)
2、文本排序显示:
①排序显示(默认根据字符在ASCII码中的升序排序):sort 文件名
(若为数字,不按数值大小排序,是按位比较大小)
②按照数值大小排序:sort -n 文件名
③排序(按位比较大小)并去掉重复的:sort -u 文件名
④逆序排序:sort -r 文件名
⑤按照用户uid数字大小排序显示:
sort -t 指定分隔符 -k 指定第几列 -n /etc/passwd
sort -f 排序--按位比较大小 时忽略字符大小写65 97(a,A)
⑥显示时去掉重复的行,重复的行必须相邻:uniq 文件名(不相邻就不被认为是重复)
sort -d 只显示重复的行
sort -D 显示所有重复的行
sort -c 显示重复行重复的次数
3、*文本过滤显示:grep可以根据特定的字符串,对指定文件的每一行进行搜索,如果找到了这个字符串,就将含有这些内容的行输出。
①查找文件里有字符h的字符串:grep h 文件名
②匹配整个单词:grep -w 单词 文件名
③匹配以r开始的行:grep ^[r] 文件名
④匹配以q结束的行:grep q$ 文件名
⑤匹配以数字开头的行:grep ^[0-9] 文件名(以0到9开头)
⑥匹配带有a-r的字符:grep [a-r]
⑦匹配不带有a-r的字符:grep [^a-r]:
⑧匹配以q或者f开头的行:grep ^[qf] 文件名
grep ^[q,f] 文件名
⑨匹配不是以q到f开始的行:^[^q-f] 文件名
⑩匹配不是以a或者f开头的行:grep ^[^af] 文件名
⑪匹配oo前面不是g或者f的字符串:grep [^gf]oo 文件名
⑫匹配以#号开头的行(注释行):grep ^#
⑬匹配非注释行:grep -v ^#
⑭匹配空白行:grep ^$
⑮匹配非空行及非注释行:grep -v ^$ /etc/ssh/sshd_config | grep -v ^#
⑯搜索当前目录下所有文件中(包括子目录下的文件)带有h的文件:grep -r h ./*
⑰搜索当前目录下所有普通文件(不包括子目录下的文件)中带有h的文件:grep -d skip h ./*
⑱-l:查询多文件时只输出包含匹配字符的文件名
⑲搜索时忽略大小写:grep -i
⑳搜索时显示匹配到的那一行以及下2行:grep -A 2
㉑搜索时显示匹配到的那一行以及上2行:grep -B 2
㉒搜索时显示匹配到的那一行以及上下2行:grep -C 2