08.常见文本处理工具

常见文本处理工具

1. cat

★ 查看文本文件内容
cat [OPTION]... [FILE]...

-E|--show-ends 			# 显示行结束符$
-A|--show-all 			# 显示所有控制符
-n|--number 			# 对显示出的每一行进行编号
-b|--number-nonblank 	# 非空行编号
-s|--squeeze-blank 		# 压缩连续的空行成一行

[root@rocky8 day5]# cat  a.txt 
wwwwwww

#

[root@rocky8 day5]# cat -A a.txt 
wwwwwww$
$
#$

[root@rocky8 day5]# cat -n a.txt 
     1	wwwwwww
     2	
     3	#

[root@rocky8 day5]# cat -b a.txt 
     1	wwwwwww

     2	#
[root@rocky8 day5]# nl a.txt 
     1	wwwwwww
       
     2	#

2. tac

★ 逆向显示文本内容
[root@rocky8 day5]#cat 10.txt 
1
2
3
[root@rocky8 day5]#tac 10.txt 
3
2
1

3. rev

★ 同一行的内容逆向显示
[root@rocky8 day5]#cat f1.txt 
1 2 3
a b c
[root@rocky8 day5]#rev f1.txt 
3 2 1
c b a

4. hexdump

★ hexdump 命令用于以十六进制、十进制、八进制或ASCII格式显示文件内容。

用法:
hexdump [选项] <文件>...

选项:
-b, --one-byte-octal:		# 以一字节八进制显示。
-c, --one-byte-char:		# 以一字节字符显示。
-C, --canonical:			# 以规范的十六进制+ASCII显示。
-d, --two-bytes-decimal:	# 以两字节十进制显示。
-o, --two-bytes-octal:		# 以两字节八进制显示。
-x, --two-bytes-hex:		# 以两字节十六进制显示。
-L, --color[=<mode>]# 解释颜色格式化说明符。默认情况下启用颜色。
-e, --format <format># 用于显示数据的格式字符串。
-f, --format-file <file># 包含格式字符串的文件。
-n, --length <length># 仅解析指定长度的输入。
-s, --skip <offset># 从开头跳过指定的字节数。
-v, --no-squeezing:			# 输出相同的行。
-h, --help:					# 显示帮助信息。
-V, --version:				# 显示版本信息。

[root@rocky8 day5]#hexdump -C -n 512 /dev/sda
00000000  eb 63 90 10 8e d0 bc 00  b0 b8 00 00 8e d8 8e c0  |.c..............|
00000010  fb be 00 7c bf 00 06 b9  00 02 f3 a4 ea 21 06 00  |...|.........!..|
00000020  00 be be 07 38 04 75 0b  83 c6 10 81 fe fe 07 75  |....8.u........u|
00000030  f3 eb 16 b4 02 b0 01 bb  00 7c b2 80 8a 74 01 8b  |.........|...t..|
00000040  4c 02 cd 13 ea 00 7c 00  00 eb fe 00 00 00 00 00  |L.....|.........|
00000050  00 00 00 00 00 00 00 00  00 00 00 80 01 00 00 00  |................|
00000060  00 00 00 00 ff fa 90 90  f6 c2 80 74 05 f6 c2 70  |...........t...p|
00000070  74 02 b2 80 ea 79 7c 00  00 31 c0 8e d8 8e d0 bc  |t....y|..1......|
00000080  00 20 fb a0 64 7c 3c ff  74 02 88 c2 52 be 05 7c  |. ..d|<.t...R..||
00000090  b4 41 bb aa 55 cd 13 5a  52 72 3d 81 fb 55 aa 75  |.A..U..ZRr=..U.u|
000000a0  37 83 e1 01 74 32 31 c0  89 44 04 40 88 44 ff 89  |7...t21..D.@.D..|
000000b0  44 02 c7 04 10 00 66 8b  1e 5c 7c 66 89 5c 08 66  |D.....f..\|f.\.f|
000000c0  8b 1e 60 7c 66 89 5c 0c  c7 44 06 00 70 b4 42 cd  |..`|f.\..D..p.B.|
000000d0  13 72 05 bb 00 70 eb 76  b4 08 cd 13 73 0d 5a 84  |.r...p.v....s.Z.|
000000e0  d2 0f 83 de 00 be 85 7d  e9 82 00 66 0f b6 c6 88  |.......}...f....|
000000f0  64 ff 40 66 89 44 04 0f  b6 d1 c1 e2 02 88 e8 88  |d.@f.D..........|
00000100  f4 40 89 44 08 0f b6 c2  c0 e8 02 66 89 04 66 a1  |.@.D.......f..f.|
00000110  60 7c 66 09 c0 75 4e 66  a1 5c 7c 66 31 d2 66 f7  |`|f..uNf.\|f1.f.|
00000120  34 88 d1 31 d2 66 f7 74  04 3b 44 08 7d 37 fe c1  |4..1.f.t.;D.}7..|
00000130  88 c5 30 c0 c1 e8 02 08  c1 88 d0 5a 88 c6 bb 00  |..0........Z....|
00000140  70 8e c3 31 db b8 01 02  cd 13 72 1e 8c c3 60 1e  |p..1......r...`.|
00000150  b9 00 01 8e db 31 f6 bf  00 80 8e c6 fc f3 a5 1f  |.....1..........|
00000160  61 ff 26 5a 7c be 80 7d  eb 03 be 8f 7d e8 34 00  |a.&Z|..}....}.4.|
00000170  be 94 7d e8 2e 00 cd 18  eb fe 47 52 55 42 20 00  |..}.......GRUB .|
00000180  47 65 6f 6d 00 48 61 72  64 20 44 69 73 6b 00 52  |Geom.Hard Disk.R|
00000190  65 61 64 00 20 45 72 72  6f 72 0d 0a 00 bb 01 00  |ead. Error......|
000001a0  b4 0e cd 10 ac 3c 00 75  f4 c3 00 00 00 00 00 00  |.....<.u........|
000001b0  00 00 00 00 00 00 00 00  73 3d 45 24 00 00 80 04  |........s=E$....|
000001c0  01 04 83 fe c2 ff 00 08  00 00 00 00 20 00 00 fe  |............ ...|
000001d0  c2 ff 8e fe c2 ff 00 08  20 00 00 f8 df 18 00 00  |........ .......|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 aa  |..............U.|
00000200

5. more

★ 可以实现分页查看文件,可以配合管道实现输出信息的分页
more [OPTIONS...] FILE...

-d # 在底部显示提示
-s # 压缩连续空行

命令选项
空格键 	# 翻页
回车键 	# 下一行
!cmd  	  # 执行命令
h  		  # 显示帮助
:f  	  # 显示文件名和当前行号
=  		  # 显示行号

[root@ubuntu2204 ~]#cat /var/log/syslog | more

6. less

★ 实现分页查看文件或STDIN输出
less [OPTIONS...] FILE...

-e 	# 显示完成后自动退出
-N 	# 显示行号
-s 	# 压缩连续空行
-S 	# 不换行显示较长的内容

命令选项
:h 			# 显示帮助
/string 	# 搜索
:!cmd 		# 执行命令
b 			# 向上翻

7. head

★ 显示文件或标准输入的前面行(显示文本前面或后面的行内容)
head [OPTION]... [FILE]...

-c|--bytes=N 			# 指定获取前N字节
-n|--lines=N 			# 指定获取前N行,N如果为负数,表示从文件头取到倒数第N前
-N 						# 同上
-q|--quiet|--silent 	# 不输出文件名
-v|--verbose       		# 输出文件名
-z|--zero-terminated    # 以NULL字符而非换行符作为行尾分隔符

[root@rocky8 ~]#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
[root@rocky8 ~]#head -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

8. tail

tail 和head 相反,查看文件或标准输入的倒数行
tail [OPTION]... [FILE]...

-c|--bytes=N 				# 指定获取后N字节
-n|--lines=N 				# 指定获取后N行,如果写成+N,表示从第N行开始到文件结束
-N 							# 同上
-f|--follow=descriptor 		# 跟踪显示文件fd新追加的内容,常用日志监控,当删除再新建同名文件,将无法继续跟踪
-F|--follow=name --retry 	# 跟踪文件名,相当于--follow=name --retry,当删除文件再新建同名文件,可继续追踪
-q|--quiet|--silent 		# 不输出文件名
-z|--zero-terminated     	# 以 NULL字符而非换行符作为行尾分隔符
tailf 						# 类似 tail –f,当文件不增长时并不访问文件,节约资源,CentOS8已经无此工具

[root@rocky8 day5]#cat 10.txt 
1
2
3
4
5
6
7
8
9
10
[root@rocky8 day5]#tail -n 3 10.txt 
8
9
10
[root@rocky8 day5]#tail -n +3 10.txt 
3
4
5
6
7
8
9
10

9. cut

★ 提取文本文件或STDIN数据的指定列(按列抽取文本)
cut OPTION... [FILE]...

-b|--bytes=LIST       	   # 以字节分割,指定要显示的列
-c|--characters=LIST       # 以字符分割,指定要显示的列
-d|--delimiter=DELIM       # 指定分割符,默认是tab
-f|--fields=LIST           # 要显示的列,-f1, -f1,2,3, -f 1-3,4
-s|--only-delimited        # 不显示没有包括分割符的内容
--output-delimiter=STRING  # 输出的时候用指定字符代替分割符
-z|--zero-terminated       # 以 NUL 字符而非换行符作为行尾分隔符

[root@rocky8 ~]# cut -d : -f1,3-4,7 /etc/passwd 
root:0:0:/bin/bash
bin:1:1:/sbin/nologin
daemon:2:2:/sbin/nologin
adm:3:4:/sbin/nologin
lp:4:7:/sbin/nologin
sync:5:0:/bin/sync

10. paste

★ 合并多个文件同行号的列到一行
paste [OPTION]... [FILE]...

-d|--delimiters=LIST   # 指定分割符,默认用TAB
-s|--serial            # 合成一行显示
-z|--zero-terminated   # 以 NUL 字符而非换行符作为行尾分隔符

[root@centos8 ~]# paste -d":" alpha.log seq.log 
a:1
b:2
c:3
d:4
e:5

11. wc

★ 收集文本统计数据
   统计文件的行总数、单词总数、字节总数和字符总数,可以对文件或STDIN中的数据统计
wc [OPTION]... [FILE]...

-l|--lines 			 # 只计数行数
-w|--words 			 # 只计数单词总数
-c|--bytes 			 # 只计数字节总数
-m|--chars 			 # 只计数字符总数
-L|--max-line-length # 显示文件中最长行的长度

[root@rocky8 day5]#cat b.txt 
word
word
word
word
word

[root@rocky8 day5]#wc b.txt 
 6       5      26   b.txt
行数   单词数   字节数

12. sort

★ 文本排序
   把整理过的文本显示在STDOUT,不改变原始文件
sort [OPTION]... [FILE]...

-b|--ignore-leading-blanks # 忽略文件中的空白
-f|--ignore-case           # 忽略大小写
-h|--human-numeric-sort    # 人类可读排序
-M|--month-sort            # 以月份排序
-n|--numeric-sort          # 以数字大小排序
-R|--random-sort           # 随机排序
-r|-reverse                # 倒序
-t|--field-separator=SEP   # 指定列分割符
-k|--key=KEYDEF            # 指定排序列
-u|--unique                # 去重
-z|--zero-terminated       # 以 NUL 字符而非换行符作为行尾分隔符

13. uniq

★ 从输入中删除前后相接的重复的行,常和 sort 配合使用
uniq [OPTION]... [INPUT [OUTPUT]]

-c|--count             # 显示每行出现次数
-d|--repeated          # 仅显示有重复行
-D                     # 显示所有重复行具体内容
-u|--unique            # 仅显示不重复的行
-z|--zero-terminated   # 以 NUL 字符而非换行符作为行尾分隔符

14. diff

★ 比较两个文件之间的区别
diff [OPTION]... FILES

-u #选项来输出“统一的(unified)”diff格式文件,最适用于补丁文件

15. patch

★ 复制在其它文件中进行的改变(要谨慎使用)
patch [OPTION]... [ORIGFILE [PATCHFILE]]

-b|--backup   #备份

16. tr

★ 用于转换字符、删除字符和压缩重复的字符。它从标准输入读取数据并将结果输出到标准输出
tr [OPTION]... SET1 [SET2]

-c|-C|--complement 	 #用SET2替换SET1中没有包含的字符
-d|--delete 		 #删除SET1中所有的字符,不转换
-s|--squeeze-repeats #压缩SET1中重复的字符,即删除重复的字符
-t|--truncate-set1 	 #将SET1用SET2替换,SET2中不够的,就不处理

[root@rocky8 day3]# tr a-z A-Z
adsd
ADSD

[root@rocky8 day3]# tr -d [2-5]
1234567
167

[root@rocky8 ~]#echo "1a2b3c4d" | tr -d '[:digit:]'
abcd
[root@rocky8 ~]#echo "1a2b3c4d" | tr -dc '[:digit:]'
1234[root@rocky8 ~]#

17. tee

★ 将标准输入复制到每个指定文件,并显示到标准输出
tee [OPTION]... [FILE]...

-a|--append 			#内容追加到给定的文件而非覆盖
-i|--ignore-interrupts 	#忽略中断信号
-p 						#对写入非管道的行为排查错误,其使用的是 warn-nopipe
--output-error[=模式]	   #设置写入出错时的行为 (warn|warn-nopipe|exit|exit-nopipe)

18. cmp

查看二进制文件的不同
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值