查看文件及内容处理命令(21个命令) cat命令 tac命令 more命令 less命令 head命令 tail命令 cut命令 split命令 paste命令 sort命令 uniq命令 wc命令 iconv命令 dos2unix命令 diff命令 vimdiff命令 rev命令 tr命令 join命令 grep命令 egrep命令

查看文件及内容处理命令(21个命令)
cat命令
tac命令
more命令
less命令
head命令
tail命令
cut命令
split命令
paste命令
sort命令
uniq命令
wc命令
iconv命令
dos2unix命令
diff命令
vimdiff命令
rev命令
tr命令
join命令
grep命令
egrep命令

cat命令:用于查看纯文本文件(内容较少的)

格式:“cat [选项] [文件]”。

参数:

参数 作用
-n 显示行号

例子:

[root@localhost ~]# cat -n  filecheck.md5
     1  d41d8cd98f00b204e9800998ecf8427e  1.test
     2  d41d8cd98f00b204e9800998ecf8427e  2.test

tac命令

tac命令:反向显示文件内容。

格式:“tac [选项] [文件]”。

例子:

[root@localhost ~]# tac filecheck.md5
d41d8cd98f00b204e9800998ecf8427e  2.test
d41d8cd98f00b204e9800998ecf8427e  1.test

more命令

more命令:用于查看纯文本文件(内容较多的)

格式:“more [选项]文件”。

操作:空格或回车下一页

less命令

less命令:less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。

格式:less [选项] 文件

head命令

head命令:用于查看纯文本文档的前N行

格式:“head [选项] [文件]”。

tail命令

tail命令:用于查看纯文本文档的后N行或持续刷新内容

格式:“tail [选项] [文件]”。

cut命令

cut命令:用于按“列”提取文本字符

格式:“cut [参数] 文本”。

参数:

参数 作用
-d 设置间隔符号
-f 设置需要看的列数

例子:

# 获取用户名
[root@localhost ~]# cut -d: -f1  /etc/passwd
root
bin
daemon
···

split命令

split命令:用于将一个文件分割成数个。

该指令将大文件分割成较小的文件,在默认情况下将按照每1000行切割成一个小文件。

格式: split [OPTION]... [INPUT [PREFIX]]

split [--help][--version][-<行数>][-b <字节>][-C <字节>][-l <行数>][要切割的文件][输出文件名]

参数:

参数 作用
-<行数> 指定每多少行切成一个小文件
-b<字节> 指定每多少字节切成一个小文件
--help 在线帮助
-version 显示版本信息
-C<字节> 与参数"-b"相似,但是在切 割时将尽量维持每行的完整性
[输出文件名] 设置切割后文件的前置文件名, split会自动在前置文件名后再加上编号

例子:

# 每3行分割
[root@localhost ~]# split -3 pwd aaa

# 查看文件
[root@localhost ~]# ls  aaa*
aaaaa  aaaab  aaaac  aaaad  aaaae  aaaaf  aaaag  aaaah

[root@localhost ~]# cat aaaaa
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

paste命令

paste命令:用于合并文件的列。

格式: paste [OPTION]... [FILE]...

参数:

参数 作用
-d<间隔字符>或--delimiters=<间隔字符> 用指定的间隔字符取代跳格字符。
-s或--serial 串列进行而非平行处理。
[文件…] 指定操作的文件路径

例子:

[root@localhost ~]# cat aaaaa
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

[root@localhost ~]# cat aaaab
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync

# paste合并的效果
[root@localhost ~]# paste aaaaa aaaab
root:x:0:0:root:/root:/bin/bash adm:x:3:4:adm:/var/adm:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin        lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync

# 换行符做分隔
[root@localhost ~]# paste -d "
" aaaaa aaaab
root:x:0:0:root:/root:/bin/bash
adm:x:3:4:adm:/var/adm:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync

sort命令

sort命令:对文本文件按行排序

格式:sort [OPTION]... [FILE]...
sort [OPTION]... --files0-from=F

sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件]

参数:

参数 作用
-b 忽略每行前面出现的空格符号
-c 检查文件是否已经按照顺序排序
-d 处理英文字符,数字及空格字符外,忽略其他字符
-f 将小写字符视为大写字符
-i 除了040至176之间的ASCII字符外,忽略其他的字符。
-m 将几个排序好的文件进行合并。
-M 将前面3个字母依照月份的缩写进行排序。
-n 依照数值的大小排序。
-o<输出文件> 将排序后的结果存入指定的文件。
-r 以相反的顺序来排序。
-t<分隔字符> 指定排序时所用的栏位分隔字符。
+<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。

例子:

# 排序
[root@localhost ~]# sort aaa
adm:x:3:4:adm:/var/adm:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
root:x:0:0:root:/root:/bin/bash

# 指定分隔符,第k列作为排序依据
[root@localhost ~]# sort -t: -k 3  aaa
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

uniq命令

uniq命令:用于检查及删除文本文件中重复出现的行列,一般与 sort 命令结合使用。

格式: uniq [OPTION]... [INPUT [OUTPUT]]

uniq [-cdu][-f<栏位>][-s<字符位置>][-w<字符位置>][--help][--version][输入文件][输出文件]

参数:

参数 作用
-c 在每列旁边显示该行重复出现的次数。
-d 仅显示重复出现的行列。
-f<栏位>或--skip-fields=<栏位> 忽略比较指定的栏位。
-s<字符位置>或--skip-chars=<字符位置> 忽略比较指定的字符。
-u或--unique 仅显示出一次的行列。
-w<字符位置>或--check-chars=<字符位置> 指定要比较的字符。
[输入文件] 指定已排序好的文本文件。如果不指定此项,则从标准读取数据;
[输出文件] 指定输出的文件。如果不指定此选项,则将内容显示到标准输出设备(显示终端)。

例子

# 直接使用只能去重相邻行的

# 源文件
[root@localhost ~]# cat 1.txt
hello world
nihao
nihao
nihao
hello world

[root@localhost ~]# uniq -c 1.txt
      1 hello world
      3 nihao
      1 hello world

# 统计重复行的次数
[root@localhost ~]# sort 1.txt |uniq -c
      2 hello world
      3 nihao

wc命令

wc命令:用于统计指定文本的行数、字数、字节数

格式:“wc [参数] 文本”。

参数:

参数 作用
-l 只显示行数
-w 只显示单词数
-c 只显示字节数

iconv命令

iconv命令:对于给定文件把它的内容从一种编码转换成另一种编码。

格式:iconv [选项...] [文件...]

参数:

参数 作用
-f, --from-code=NAME 原始文本编码
-t ,--to-code=NAME 输出文本编码
-o, --output=FILE 输出文件
-c 忽略输出中的非法字符

例子:

# 修改编码为gbk
[root@localhost ~]# vim 2.txt
[root@localhost ~]# iconv -f UTF-8 -t GBK 1.txt -o 2.txt

# 查看文件编码类型
[root@localhost ~]# file 2.txt
2.txt: ISO-8859 text

dos2unix命令

dos2unix命令:将 DOS 格式文件转换成 UNIX 格式。

格式:dos2unix [-hkqV] [-c convmode] [-o file ...] [-n infile outfile ...]

参数:

参数 作用
-k 保持输出文件的日期不变
-q 安静模式,不提示任何警告信息
-V 查看版本
-c 转换模式,模式有:ASCII, 7bit, ISO, Mac, 默认是:ASCII
-o 写入到源文件
-n 写入到新文件

例子

最简单的用法就是dos2unix直接跟上文件名:

# 加不加-o效果一样
[root@localhost ~]# dos2unix 1.txt
dos2unix: converting file 1.txt to Unix format ...

[root@localhost ~]# dos2unix -o 1.txt
dos2unix: converting file 1.txt to Unix format ...

diff命令

diff命令:用于比较多个文本文件的差异

格式:“diff [参数] 文件”。

参数:

参数 作用
-q, --brief 确认两个文件是否不同
-c, -C NUM, --context[=NUM] 复制上下文的输出行数(默认为3行)

例子:

# 文件相同无输出,文件不同会显示不同
[root@localhost ~]# diff -q 1.txt 1.txt.bak
[root@localhost ~]# vim 1.txt.bak

[root@localhost ~]# diff -q 1.txt 1.txt.bak
Files 1.txt and 1.txt.bak differ


# 显示不同的上下文(默认三行)
[root@localhost ~]# diff -c 1.txt 1.txt.bak
*** 1.txt       2019-07-18 04:01:22.776329996 -0400
--- 1.txt.bak   2019-07-18 04:01:57.407055344 -0400
***************
*** 3,5 ****
--- 3,6 ----
  nihao
  你好
  hello world
+ ooooo

# 指定上下文5行
[root@localhost ~]# diff -C 5  1.txt 1.txt.bak
*** 1.txt       2019-07-18 04:01:22.776329996 -0400
--- 1.txt.bak   2019-07-18 04:01:57.407055344 -0400
***************
*** 1,5 ****
--- 1,6 ----
  hello world
  nihao
  nihao
  你好
  hello world
+ ooooo

vimdiff命令

vimdiff命令:命令行可视化文件比较工具,常用于文本文件。

格式:vimdiff [options] file1 file2 [file3 [file4]]

例子:

vimdiff 1.txt 1.txt.bak

rev命令

rev命令:反转文件的每行内容

格式:rev [options] [file ...]

例子:

[root@localhost ~]# cat 1.txt
hello world
nihao
nihao
你好
hello world

# 当前行反向输出
[root@localhost ~]# rev 1.txt
dlrow olleh
oahin
oahin
好你
dlrow olleh

tr命令

tr命令:用于替换文本文件中的字符

格式:“tr [原始字符] [目标字符]”。

例子:

[root@localhost ~]# cat 1.txt | tr [a-z] [A-Z]
HELLO WORLD
NIHAO
NIHAO
你好
HELLO WORLD

join命令

join命令:用来将两个文件中,制定栏位内容相同的行连接起来。

格式:join [OPTION]... FILE1 FILE2

参数:

参数 作用
-a<1或2> 除了显示原来的输出内容之外,还显示指令文件中没有相同栏位的行;
-e<字符串> 若[文件1]与[文件2]中找不到指定的栏位,则在输出中填入选项中的字符串;
-i或--ignore-case 比较栏位内容时,忽略大小写的差异;
-o<格式> 按照指定的格式来显示结果;
-t<字符> 使用栏位的分割字符;
-v<1或2> 更-a相同,但是只显示文件中没有相同栏位的行;
-1<栏位> 连接[文件1]指定的栏位;
-2<栏位> 连接[文件2]指定的栏位。

例子

# 两个文件内容如下
[root@localhost ~]# cat 1.txt
hello 111
world 222
ni    333
hao   444

[root@localhost ~]# cat 1.txt.bak
hello 50人
world 100人
ni    1000人
hao   150人


# 合并(属于等值连接,没有匹配的不连接)
[root@localhost ~]# join 1.txt 1.txt.bak
hello 111 50人
world 222 100人
ni 333 1000人
hao 444 150人

# 显示不同的行和重复的行
[root@localhost ~]# join -a1  1.txt 1.txt.bak
hello 111 50人
world 222 100人
ni 333 1000人
hao 444

[root@localhost ~]# join -a2  1.txt 1.txt.bak
hello 111 50人
world 222 100人
ni 333 1000人


grep命令

grep命令:用于在文本中执行关键词搜索,并显示匹配的结果

格式:“grep [选项] [文件]”。

参数 作用
-b 将可执行文件(binary)当作文本文件(text)来搜索
-c 仅显示找到的行数
-i 忽略大小写
-n 显示行号
-v 反向选择—仅列出没有“关键词”的行

例子:

# 显示存在null的行号
[root@localhost ~]# grep -n null /etc/passwd
17:tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin


egrep命令