查看文件及内容处理命令(21个命令)

cat命令

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 "\n" 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命令

posted @ 2019-07-20 18:45  Akiz  阅读(1148)  评论(0编辑  收藏  举报