Linux基础笔记15 | 文本处理与压缩补充知识

文本处理

wc

用于统计文件的字节数、单词数、行数等信息,并将统计结果标准输出到终端

  • -w:统计单词数
  • -c:统计字节数
  • -l:统计行数
  • -m:统计字符数
  • -L:显示最长行的长度
  • –help:显示帮助信息
  • –version:显示版本信息
[root@iZrgngz5lz7qzsZ hj]# echo "hello world" | wc -w
2
[root@iZrgngz5lz7qzsZ hj]# echo "hello world" | wc -c
12
[root@iZrgngz5lz7qzsZ hj]# echo "hello world" | wc -l
1
[root@iZrgngz5lz7qzsZ hj]# echo "hello world" | wc -m
12
[root@iZrgngz5lz7qzsZ hj]# echo "hello world" | wc -L
11

cut

按列提取文件内容

  • -c:字符为单位分割
  • -b:字节为单位分割
  • -d:自定义分隔符,默认是制表符
  • -f:显示指定字段的内容
  • -n:取消分割多字节字符
## 以“:”分割,第二列数据
[root@iZrgngz5lz7qzsZ hj]# echo "11:22:33:44" | cut -d : -f 2
22

## 以字符分割,前4个字符
[root@iZrgngz5lz7qzsZ hj]# echo "11:22:33:44" | cut -c 1-4
11:2
[root@iZrgngz5lz7qzsZ hj]# echo "11:22:33:44" | cut -c 1
1
[root@iZrgngz5lz7qzsZ hj]#

sort

对文件内容进行排序

参数解释
-b忽略每行前面开始出的空格字符
-c检查文件是否已经按照顺序排序
-d除字母、数字及空格字符外,忽略其他字符
-f将小写字母视为大写字母
-i除040至176之间的ASCII字符外,忽略其他字符
-m将几个排序号的文件进行合并
-M将前面3个字母依照月份的缩写进行排序
-n依照数值的大小排序
-o <输出文件>将排序后的结果存入制定的文件
-r以相反的顺序来排序
-t <分隔字符>指定排序时所用的栏位分隔字符
-k指定需要排序的栏位
## 对/etc/passwd 文件的uid按照数值排序
[root@iZrgngz5lz7qzsZ hj]# sort -t : -k 3 -n 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
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nscd:x:28:28:NSCD Daemon:/:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
nginx:x:997:995:Nginx web server:/var/lib/nginx:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
admin:x:1000:1000::/home/admin:/bin/bash
test:x:1001:1001::/home/test:/bin/bash
[root@iZrgngz5lz7qzsZ hj]#

uniq

用于去除文件中的重复内容行

参数解释
-c打印每行在文本中重复出现的次数
-d每个重复纪录只出现一次
-u只显示没有重复的纪录
[root@iZrgngz5lz7qzsZ hj]# uniq -c test.log
      2 1111
      4 2222
      5 33333
[root@iZrgngz5lz7qzsZ hj]# uniq -d test.log
1111
2222
33333
[root@iZrgngz5lz7qzsZ hj]#

diff

比较文本的差异

参数解释
-a逐行比较文本文件
-b不检查空格字符的不同
-W指定栏宽
-x不比较选项中所指定的文件或目录
-X将文件或目录类型存成文本文件
-y以并列的方式显示文件的异同之处
–brief仅判断两个文件是否不同
–help查看帮助信息
–left-column若两个文件某一行内容相同,则仅在左侧的栏位显示该行内容
–suppress-common-lines在使用-y参数时,仅显示不同之处
[root@iZrgngz5lz7qzsZ hj]# diff -c passwd passwd.bak
*** passwd      2022-09-06 00:16:52.821463953 +0800
--- passwd.bak  2022-09-06 00:31:51.082895607 +0800
***************
*** 6,14 ****
  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
! games:x:12:100:games:/usr/games:/sbin/nologin
  ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
  nobody:x:99:99:Nobody:/:/sbin/nologin
  systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
--- 6,14 ----
  sync:x:5:0:sync:/sbin:/bin/sync
  shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
  halt:x:7:0:halt:/sbin:/sbin/halt
! m1ail:x:8:12:mail:/var/spool/mail:/sbin/nologin
! op2erator:x:11:0:operator:/root:/sbin/nologin
! gam3es:x:12:100:games:/usr/games:/sbin/nologin
  ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
  nobody:x:99:99:Nobody:/:/sbin/nologin
  systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
[root@iZrgngz5lz7qzsZ hj]# diff -a passwd passwd.bak
9,11c9,11
< mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
< operator:x:11:0:operator:/root:/sbin/nologin
< games:x:12:100:games:/usr/games:/sbin/nologin
---
> m1ail:x:8:12:mail:/var/spool/mail:/sbin/nologin
> op2erator:x:11:0:operator:/root:/sbin/nologin
> gam3es:x:12:100:games:/usr/games:/sbin/nologin
[root@iZrgngz5lz7qzsZ hj]#

## 判断2个文件是否不同
[root@iZrgngz5lz7qzsZ hj]# diff --brief passwd passwd.bak
Files passwd and passwd.bak differ
[root@iZrgngz5lz7qzsZ hj]#

patch

让用户利用设置修补文件的方式,修改,更新原始文件

这玩意没用过,不知道什么用途用到,后续补充吧

tr

替换或删除字符

从标准输入中替换、删除字符,并将结果写到标准输出,不改变源文件内容

## 将文本的2删除
[root@vm10 test]# cat 2.txt
234
[root@vm10 test]# tr -d '2' < 2.txt
34
[root@vm10 test]# cat 2.txt
234
[root@vm10 test]#

## 将文本中的2替换成1
[root@vm10 test]# cat 2.txt
234
[root@vm10 test]# tr '2' '1' < 2.txt
134
[root@vm10 test]#

## 统一将小写转大写
[root@vm10 test]# cat 1.txt
aaa
bbb
CCC
DDDD
[root@vm10 test]# tr '[a-z]' '[A-Z]'<1.txt
AAA
BBB
CCC
DDDD
[root@vm10 test]#

## 将字母替换成数字
[root@vm10 test]# tr '[a-d]' '[0-3]'<1.txt
000
111
CCC
DDDD
[root@vm10 test]#

压缩工具

zip

“.zip”的压缩方式:压缩文件或目录

(默认未安装此命令,centos 7可使用yum install -y zip进行yum在线安装)

# 压缩当前目录下的test3.txt和test4.txt文件,压缩包名称为:test.zip
zip test.zip test3.txt test4.txt
# 压缩当前目录下的test4目录
zip -r test4.zip test4

unzip

提取压缩中的文件

(默认未安装,centos 7可使用yum install -y unzip进行yum在线安装)

# 将test.zip解压缩在当前目录
unzip test.zip
# 将test.zip解压缩在指定目录/tmp/test4目录下
unzip -d /tmp/test4 test.zip

gzip

“.gz”格式的压缩方式:压缩文件或者目录

# 压缩文件test3.txt(文件本身压缩后就不存在了,会删除源文件)
gzip test3.txt
# 解压缩test3.txt.gz文件
gzip -d test3.txt.gz
# 压缩目录test2bak:不对目录做压缩,只对目录下的文件递归去做压缩
gzip -r test2bak

bzip2

".bz2"压缩格式

(默认未安装,centos 7可使用yum install -y bzip2进行yum在线安装)

# 压缩test3.txt文件(源文件会删除)
bzip2 test3.txt
# 解压test3.txt.bz2文件
bzip2 -d test3.txt.bz2
# 保留原文件压缩test3.txt文件
bzip2 -k test3.txt

tar

打包与解包文件,linux 下用的最多的一个解压缩命令

# 将目录/etc打包保存为:etcbak.tar
tar -cf etcbak.tar /etc/
# 将目录/etc打包保存为:etcbak.tar.gz
tar -czf etcbak.tar.gz /etc/
# 将目录/etc打包保存为:etcbak.tar.bz2
tar -cjf etcbak.tar.bz2 /etc/
# 将目录/tmp/test/etc打包后删除源文件
tar -czf ectbak.tar.gz /tmp/test/etc/ --remove-files
# 从打包文件中删除passwd文件
tar --delete etc/passwd -f etcbak.tar
# 查看打包文件的信息
tar -tf etcbak.tar
# 查看打包文件的详细信息
tar -tvf etcbak.tar
# 解压gz格式的打包文件在当前目录
tar -xzf etcbak.tar.gz
# 解压bz2格式的打包文件至当前目录
tar -xjf etcbak.tar.bz2
# 解压gz格式的打包文件至/tmp/test目录下
tar -xzf etcbak.tar.gz -C /tmp/test
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值