3.2查看普通文件的内容
文本统计:wc——word count 显示文件行数、单词数、字节数和文件名
[root@192 ~]# wc file1
1(行数) 1(单词数) 1(字节数除末行的每一行结尾断行符都算一个字节) file1
[root@bogon /]# cat file1
liyan
haha
[root@bogon /]# wc file1
2 2 11 file1
[root@bogon /]# cat -A file1
liyan$
haha$
#在UTF-8编码格式里面,显示时一个字符占一个字节,一个中文字占用3个字节,1个字符
只显示单词数:wc -w 文件名
只显示字节数:wc -c 文件名
只显示行数:wc -l 文件名
只显示字符数:wc -m 文件名
显示最长的一行的字符数(不包括断行符):wc -L 文件名
1、直接查看文件内容
cat 连接 并显示文件内容 到标准 输出
连接
[root@192 ~]# cat file5
cat: file5: No such file or directory
内容和标准输出
[root@192 ~]# cat file1
hehe
haha
显示文件内容并显示行号:cat -n 文件名
黑洞机制(shell脚本里面经常用)
将文件内容重定向到/dev/null:
标准输出 cat 文件 > /dev/null
标准错误输出 cat 文件 2> /dev/null
[root@192 ~]# cat file1 > /dev/null
[root@192 ~]# cat file5 2> /dev/null
不带任何选项时,从标准输入接收输出到标准输出
[root@192 ~]# cat > /dev/null
nishishabi(标准输入)(ctrl d退出)
tac
逆序显示文件:tac(cat查看文件正序,cat反过来即是逆序查看文件)
more
从头开始逐行查看(按d向后翻按b往回翻):more /var/log/messages 在没有翻到最后一屏时支持向前翻,显示文件查看百分比,但翻到最后一页时会退出
前后查看文件内容:less /var/log/messages 支持翻到最后一页,不显示文件百分比,不退出,按q退出
man手册查看命令用法默认用less打开
默认查看文件前10行:head /etc/passwd
指定查看前5行:head -5 /etc/passwd
默认查看后10行:tail /etc/passwd
查看后5行:tail -5 /etc/passwd
动态跟踪变化:
tail -f /var/log/messages
2、对文件数据内容进行处理之后显示
文本切割显示:
cut -d 指定分隔符 -f 指定第几列 被切割文件
-f 1,3第一列和第三列
-f 1-3第一列到第三列
-c 1-4 指定第一到第四个字符
指定分隔符为空格的时候需要用单引号或双引号引起来,因为空格的作用是分割多个参数,如果不用引号则会被认为是与下一个参数分割的符号,而不是指定分隔符
[root@192 ~]# cut -d -f 2 /etc/passwd
cut: the delimiter must be a single character
Try ‘cut --help’ for more information.
[root@192 ~]# cut -d " " -f 2 /etc/passwd
root❌0:0:root:/root:/bin/bash
bin❌1:1:bin:/bin:/sbin/nologin
cut -d : -f 1-3 –output-delimiter=@(将输出的分隔符换成@) /etc/passwd
文本排序显示:
排序显示(默认根据字符在ASCII码中的升序排序):sort 文件名(先比较第一位再比较第二位)
[root@192 ~]# sort file4
1
10
100
1000
123
132
按照数值大小排序:sort -n 文件名
排序并去掉重复的:sort -u 文件名
逆序排序:sort -r 文件名
按照用户uid数字大小排序显示:
sort -t 指定分隔符 -k 指定第几列 -n /etc/passwd
-f 排序时忽略字符大小写65 97
[root@192 ~]# sort file3
a
A
b
B
c
C
[root@192 ~]# sort -f file3
A
a
B
b
C
c
显示时去掉重复的行,重复的行必须相邻:
uniq 文件名
[root@192 ~]# cat file4
12
12
122
12
[root@192 ~]# uniq file4
12
122
12
-d 只显示重复的行
[root@192 ~]# uniq -d file4
12
-D 显示所有重复的行
[root@192 ~]# uniq -D file4
12
12
-c 显示重复行重复的次数
[root@192 ~]# uniq -c file4
2 12
1 122
1 12
文本过滤显示:grep可以根据特定的字符串,对指定文件的每一行进行搜索,如果找到了这个字符串,就将含有这些内容的行输出。
查找文件里有字符h的字符串:grep h 文件名
匹配整个单词:grep -w 单词 文件名
匹配以q开始的行:grep 1 文件名
匹配以q结束的行:grep q$ 文件名
匹配以数字开头的行:grep 2 文件名
匹配以q或者f开头的行:grep 3 文件名
不匹配以q或者f开头的行:grep [qf]文件名
匹配oo前面不是f或者g的字符串:grep [^gf]oo 文件名
匹配以#号开头的行:grep ^#
过滤空白行:grep ^$
过滤之后没有空白行且都是#开口的行
grep -v ^$ ^# /etc/passwd不对,因为只能按照一个标准过滤
grep -v ^$ /etc/passwd | grep ^#
如果要明确搜索子目录:grep -r h ./*
忽略子目录:grep -d skip h ./*
-l:查询多文件时只输出包含匹配字符的文件名
搜索时忽略大小写:grep -i
搜索时显示没有匹配到的行:grep -v
搜索时显示匹配到的那一行以及下2行:grep -A 2
搜索时显示匹配到的那一行以及上2行:grep -B 2
搜索时显示匹配到的那一行以及上下2行:grep -C 2