Linux-文本过滤与处理

1.cat指令:连接指令并显示内容

cat(英文全拼:concatenate)命令用于连接文件并打印到标准输出设备上。

1.1 语法

cat [-AbeEnstTuv] [--help] [--version] fileName

1.2 参数说明:

-n 或 --number:由 1 开始对所有输出的行数编号。

-b 或 --number-nonblank:和 -n 相似,只不过对于空白行不编号。

-s 或 --squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行。

-v 或 --show-nonprinting:使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外。

-E 或 --show-ends : 在每行结束处显示 $。

-T 或 --show-tabs: 将 TAB 字符显示为 ^I。

-A, --show-all:等价于 -vET。

-e:等价于"-vE"选项;

-t:等价于"-vT"选项;

1.3 实例

1.3.1 参数实例

1  jack go
     2  
     3  
     4  1rtopajzlakmok[p
     5  
     6  ekoskkdspkpds
     7  wokkppppoasdo
[root@VM-4-13-centos cat]# cat -b lesscat.txt 
     1  jack go


     2  1rtopajzlakmok[p

     3  ekoskkdspkpds
     4  wokkppppoasdo
[root@VM-4-13-centos cat]# cat -sn lesscat.txt 
     1  jack go
     2  
     3  1rtopajzlakmok[p
     4  
     5  ekoskkdspkpds
     6  wokkppppoasdo

 2.more指令:文件内容分屏查看器

Linux more 命令类似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能(与 vi 相似),使用中的说明文件,请按 h 。

2.1 语法

more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..]

2.2 参数

-num 一次显示的行数
-d 提示使用者,在画面下方显示 [Press space to continue, 'q' to quit.] ,如果使用者按错键,则会显示 [Press 'h' for instructions.] 而不是 ''-l 取消遇见特殊字元 ^L(送纸字元)时会暂停的功能
-f 计算行数时,以实际上的行数,而非自动换行过后的行数(有些单行字数太长的会被扩展为两行或两行以上)
-p 不以卷动的方式显示每一页,而是先清除萤幕后再显示内容
-c 跟 -p 相似,不同的是先显示内容再清除其他旧资料
-s 当遇到有连续两行以上的空白行,就代换为一行的空白行
-u 不显示下引号 (根据环境变数 TERM 指定的 terminal 而有所不同)
+/pattern 在每个文档显示前搜寻该字串(pattern),然后从该字串之后开始显示
+num 从第 num 行开始显示
fileNames 欲显示内容的文档,可为复数个数

2.3 常用操作命令

Enter 向下n行,需要定义。默认为1行
Ctrl+F 向下滚动一屏
空格键 向下滚动一屏
Ctrl+B 返回上一屏
= 输出当前行的行号
:f 输出文件名和当前行的行号
V 调用vi编辑器
!命令 调用Shell,并执行命令
q 退出more

 3.less

lessmore 类似,less 可以随意浏览文件,支持翻页和搜索,支持向上翻页和向下翻页。

3.1 语法

less [参数] 文件 

3.2 参数说明

-b <缓冲区大小> 设置缓冲区的大小
-e 当文件显示结束后,自动离开
-f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
-g 只标志最后搜索的关键词
-i 忽略搜索时的大小写
-m 显示类似more命令的百分比
-N 显示每行的行号
-o <文件名> 将less 输出的内容在指定文件中保存起来
-Q 不使用警告音
-s 显示连续空行为一行
-S 行过长时间将超出部分舍弃
-x <数字> 将"tab"键显示为规定的数字空格
/字符串:向下搜索"字符串"的功能
?字符串:向上搜索"字符串"的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
b 向上翻一页
d 向后翻半页
h 显示帮助界面
Q 退出less 命令
u 向前滚动半页
y 向前滚动一行
空格键 滚动一页
回车键 滚动一行
[pagedown]: 向下翻动一页
[pageup]: 向上翻动一页
View Code

 4.grep 在文件中搜索所用的行

grep 查找文件里符合条件的字符串,常与管道符|、cat、ps一起使用;主要用于查找文件中符合条件的字符串、统计文件中符合条件的字符串行数、grep 不显示自身进程

4.1 常用参数

-c:统计符合字符串条件的行数
-v:显示不包括文本的所有信息

4.2 实例

[root@VM-4-13-centos grep]#  ifconfig  | grep 127.0.0.1
        inet 127.0.0.1  netmask 255.0.0.0

 5.head 显示文件头部的内容

head 命令可用于查看文件的开头部分的内容,有一个常用的参数 -n 用于显示行数,默认为 10,即显示 10 行的内容。

5.1 语法

head [参数] [文件]  

5.2 参数

-q 隐藏文件名
-v 显示文件名
-c<数目> 显示的字节数。
-n<行数> 显示的行数。

5.3 实例

5.3.1  head /etc/passwd  默认显示前十行内容,等同于带参数 -n 10

[root@VM-4-13-centos ~]# head /etc/passwd
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
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@VM-4-13-centos ~]# head -n 10 /etc/passwd
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
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
View Code

5.3.2 head -n 3 /etc/passwd  显示前三行内容

[root@VM-4-13-centos ~]# head -n 3 /etc/passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
View Code

5.3.2 head -v /etc/passwd 显示文件名

[root@VM-4-13-centos ~]#  head -v /etc/passwd 
==> /etc/passwd <==
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
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
View Code

5.3.3 head -c 50 /etc/passwd 显示字节数

bin:x:1:1:bin:/bin[root@VM-4-13-centos ~]# head -c 47 /etc/passwd
root:x:0:0:root:/root:/bin/bash

 6.tail指令:输出文件尾部内容

tail -f filename 会把 filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 filename 更新就可以看到最新的文件内容。

6.1 语法格式

tail [参数] [文件]  

6.2 语法格式

-f 循环读取
-q 不显示处理信息
-v 显示详细的处理信息
-c<数目> 显示的字节数
-n<行数> 显示文件的尾部 n 行内容
--pid=PID 与-f合用,表示在进程ID,PID死掉之后结束
-q, --quiet, --silent 从不输出给出文件名的首部
-s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒

6.3 实例

tail  -f  文件名  -n  2000

7.wc指令:统计文件的字节数,单词数和行数

利用wc指令我们可以计算文件的Byte数、字数、或是列数,若不指定文件名称、或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据。

7.1 语法

wc [-clw][--help][--version][文件...]

7.2 参数

-c或--bytes或--chars 只显示Bytes数。
-l或--lines 显示行数。
-w或--words 只显示字数。
--help 在线帮助。
--version 显示版本信息。

7.3 实例

7.3.1 行数、单词数,以及该文件的字节数。

[root@VM-4-13-centos wc]# cat wc.txt 
-c或--bytes或--chars 只显示Bytes数。
-l或--lines 显示行数。
-w或--words 只显示字数。
--help 在线帮助。
--version 显示版本信息。
[root@VM-4-13-centos wc]# wc wc.txt 
  5  10 160 wc.txt

 8.uniq指令:报告或忽略文件中的重复行

7.Linux每日一个命令@uniq

9.cut指令:删除文件中的指定字段

10.join指令:将两个文件的相同字段合并

Linux join命令用于将两个文件中,指定栏位内容相同的行连接起来。
找出两个文件中,指定栏位内容相同的行,并加以合并,再输出到标准输出设备。

10.1 语法

join [-i][-a<1或2>][-e<字符串>][-o<格式>][-t<字符>][-v<1或2>][-1<栏位>][-2<栏位>][--help][--version][文件1][文件2]

10.2 参数

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

10.3 实例:测试文档

[root@VM-4-13-centos join]# cat leftjoin.txt 
Hello 95
Linux 85
test 30
my 88
[root@VM-4-13-centos join]# cat rightjoin.txt 
Hello 2005
Linux 2009
test 2006
you 66

10.3.1 join

[root@VM-4-13-centos join]# join leftjoin.txt rightjoin.txt 
Hello 95 2005
Linux 85 2009
test 30 2006
[root@VM-4-13-centos join]# join rightjoin.txt leftjoin.txt 
Hello 2005 95
Linux 2009 85
test 2006 30

 10.3.2 显示指令文件中没有相同栏位的行

[root@VM-4-13-centos join]# join -a 1 leftjoin.txt rightjoin.txt 
Hello 95 2005
Linux 85 2009
test 30 2006
my 88
[root@VM-4-13-centos join]# join -a 2 leftjoin.txt rightjoin.txt 
Hello 95 2005
Linux 85 2009
test 30 2006
you 66

 11.unexpand指令:将空白space转换为制表符

11.1 语法

unexpand [options] file

11.2 参数

-a | --all 转换所有空白。
--first-only 仅转换空白的前导序列(重写-a)。
-t | --tabs=N 将制表符N个字符分开,而不是8个字符(启用-a)
-t | --tabs=LIST
使用逗号分隔的制表位列表最后一个指定的位置可以加上前缀“/”以指定要在最后一个显式指定的制表位结束后使用的制表位大小。也可以使用前缀“+”将剩余的制表位相对于最后指定的制表位而不是第一列对齐。
--help 显示帮助信息。
--version 显示版本信息。

11.3 实例

[root@VM-4-13-centos unexpand]# cat unexpand.txt 
   1   2   3   
2   3   4 
                1       2
[root@VM-4-13-centos unexpand]# unexpand unexpand.txt 
   1   2   3   
2   3   4 
                1       2
[root@VM-4-13-centos unexpand]# unexpand -a unexpand.txt 
   1   2   3   
2   3   4 
                1       2
[root@VM-4-13-centos unexpand]# unexpand -t 5 unexpand.txt 
   1      2      3      
2   3   4 
                1       2
View Code

12.tee指令:将输入内容复制到标准输出或文件

12.1 语法:

tee [-ai][--help][--version][文件...]

12.2 参数

-a, --append                        追加到文件
-i, --ignore-interrupts           忽略中断信号
-p                                         诊断写入非管道的错误
--output-error[=MODE]        设置输出错误的方式,MODE 的选项在下边
--help                                   帮助文档
--version                              版本信息
MODE:
warn                   写入遇到错误时诊断
warn-nopipe       写入非管道遇到错误时诊断
exit                     写入遇到错误时退出
exit-nopipe         写入非管道遇到错误时退出
如果没有指定 --output-error,tee 会在写入管道发生错误时立即退出,写入非管道时诊断。

12.3 实例

[root@VM-4-13-centos tee]# cat 1.txt 
123123123123123123123123123123123123123123123123123123123123123123123
[root@VM-4-13-centos tee]# tee 1.txt 
qwer
qwer
who are you ?
who are you ?
^C
[root@VM-4-13-centos tee]# cat 1.txt 
qwer
who are you ?
[root@VM-4-13-centos tee]# tee -a 1.txt 
123
123
^C
[root@VM-4-13-centos tee]# cat 1.txt 
qwer
who are you ?
123
[root@VM-4-13-centos tee]# tee 2.txt 3.txt 
888
888
999
999
^C
[root@VM-4-13-centos tee]# cat 2.txt 
888
999
[root@VM-4-13-centos tee]# cat 3.txt 
888
999

 13.tac指令:以行为单位反序连接和打印文件

13.1 语法

tac  [OPTION]  [FILE] 

13.2 参数

  -b, --before                  在行前而非行尾添加分隔标志
  -r, --regex                   将分隔标志视作正则表达式来解析
  -s, --separator=字符串        使用指定字符串代替换行作为分隔标志
      --help            显示此帮助信息并退出
      --version         显示版本信息并退出

13.3 实例

[root@VM-4-13-centos tac]# cat tac.txt 
This is 1 line
This is 2 line
This is 3 line
[root@VM-4-13-centos tac]# cat tac.txt | tac
This is 3 line
This is 2 line
This is 1 line

 14.paste指令:合并文件

paste 指令会把每个文件以列对列的方式,一列列地加以合并。

14.语法

paste [-s][-d <间隔字符>][--help][--version][文件...]

14.2 参数

-d<间隔字符>或--delimiters=<间隔字符>  用指定的间隔字符取代跳格字符。
-s或--serial  串列进行而非平行处理。
--help  在线帮助。
--version  显示帮助信息。
[文件…] 指定操作的文件路径

14.3 实例

[root@VM-4-13-centos paste]# cat 1.txt 
111  112  113
111  111  121
111  123  111
[root@VM-4-13-centos paste]# cat 2.txt 
222  221 222
222  222 223
222  221 123
222  221 123
[root@VM-4-13-centos paste]# cat 3.txt 
333
333
[root@VM-4-13-centos paste]# paste 1.txt 2.txt 3.txt 
111  112  113   222  221 222    333
111  111  121   222  222 223    333
111  123  111   222  221 123    
        222  221 123    
[root@VM-4-13-centos paste]# paste -s 1.txt 2.txt 3.txt 
111  112  113   111  111  121   111  123  111
222  221 222    222  222 223    222  221 123    222  221 123
333     333
[root@VM-4-13-centos paste]# paste -d "#" 1.txt 2.txt 3.txt 
111  112  113#222  221 222#333
111  111  121#222  222 223#333
111  123  111#222  221 123#
#222  221 123#
[root@VM-4-13-centos paste]# paste -d "|" 1.txt 2.txt 3.txt 
111  112  113|222  221 222|333
111  111  121|222  222 223|333
111  123  111|222  221 123|
|222  221 123|
View Code

 15.cmp指令:比较两个文件

当相互比较的两个文件完全一样时,则该指令不会显示任何信息。若发现有所差异,预设会标示出第一个不同之处的字符和列数编号。若不指定任何文件名称或是所给予的文件名为"-",则cmp指令会从标准输入设备读取数据。

15.1 语法

cmp [-clsv][-i <字符数目>][--help][第一个文件][第二个文件]

15.2 参数

-c或--print-chars  除了标明差异处的十进制字码之外,一并显示该字符所对应字符。
-i<字符数目>或--ignore-initial=<字符数目>  指定一个数目。
-l或--verbose  标示出所有不一样的地方。
-s或--quiet或--silent  不显示错误信息。
-v或--version  显示版本信息。
--help  在线帮助。

15.3 实例

[root@VM-4-13-centos Linux-commands]# cat 1.txt 
abcdf
12345
[root@VM-4-13-centos Linux-commands]# cat 2.txt 
abcdf
123456
[root@VM-4-13-centos Linux-commands]# cmp -l 1.txt  2.txt 
12  12  66
cmp1.txt 已结束
[root@VM-4-13-centos Linux-commands]# cmp -c 1.txt  2.txt 
1.txt 2.txt 不同:第 2 行,第 12 字节为  12 ^J  66 6

 16.look指令:显示文件中以指定字符串开头的行

16.1 语法

look [-adf][-t<字尾字符串>][字首字符串][字典文件]

16.2 参数

-a 使用另一个字典文件web2,该文件也位于/usr/dict目录下。
-d 只对比英文字母和数字,其余一慨忽略不予比对。
-f 忽略字符大小写差别。
-t<字尾字符串> 设置字尾字符串。

16.3 实例

[root@VM-4-13-centos look]# cat look.txt 
believe there is a person who brings sunshine into your life. 
That person may have enough to spread around.
cut if you really have to wait for someone to bring you the sun and give you a good feeling, then you may have to wait a long time.
[root@VM-4-13-centos look]# look b look.txt 
believe there is a person who brings sunshine into your life. 
[root@VM-4-13-centos look]# look -f t look.txt 
That person may have enough to spread around.

 

posted @ 2022-11-16 09:35  家乐福的搬砖日常  阅读(443)  评论(0编辑  收藏  举报