【笔记】三剑客之sed、grep & sort & uniq

grep

#模糊过滤行 查找文件中包含内容的行
语法结构:
grep [参数选项] ‘过滤内容’ file1 file2
cat file1|grep ‘过滤内容’ # 可以过滤任何命令输出到屏幕上的内容

参数选项:

  • -v 取反
  • -E 支持扩展正则 | + () grep -E 相当于 egrep
  • -r 递归过滤
  • -w 过滤单词
  • -o 显示匹配的过程
  • -n 显示匹配内容的行号

案例: -v 取反 排除文件中的空行和#

[root@ahui ~]#egrep -v '^#|^$' /etc/selinux/config 
SELINUX=disabled
SELINUXTYPE=targeted 

案例: -r 递归过滤 查找/code/目录下所有包含www.huangse.com 的文件

[root@ahui ~]#echo www.huangse.com > /code/test/1.txt
[root@ahui ~]#touch /code/code.txt
[root@ahui ~]#tree /code
/code
├── code.txt
├── index.html
└── test
	└── 1.txt

1 directory, 3 files

[root@ahui ~]#grep -r 'www.huangse.com' /code/
/code/index.html:www.huangse.com
/code/test/1.txt:www.huangse.com

案例: -w 过滤单词

[root@ahui ~]#cat 2.txt 
ahuiyyyy
ahui
aahui
test
[root@ahui ~]#grep 'ahui' 2.txt
ahuiyyyy
ahui
aahui
[root@ahui ~]#grep -w 'ahui' 2.txt
ahui

过滤数字

[root@ahui ~]#seq 100 > 2.txt
[root@ahui ~]#grep -w '1' 2.txt 
1
[root@ahui ~]#grep  '2' 2.txt 
2
12
22
32
..... #太长

sed

作用:

  1. 模糊过滤文件内容
    输出指定的行
    输出指定行的区间
  2. 替换输出的内容 不修改源文件 临时替换(替换输出到屏幕上的内容)
    替换文件内容 永久替换(原文件被修改)
  3. 后向引用

参数选项:

  • -n 取消默认输出

语法结构:

  • sed ‘/模式/动作’ file
  • sed ‘/找谁/干啥’ file
  • sed ‘/找女友/干’ file

模式: 在文件中查找什么内容 以什么方式查找
按照指定行查找:

  • sed ‘3p’
  • sed ‘1,3p’
  • sed ‘/root/p’
  • sed ‘/root/,/adm/p’
  • sed ‘/^r/p’

动作: 对查找到内容的行做什么

动作:

  • p print 输出 重点
  • d delete 删除 重点
  • a 追加内容
  • i 插入内容
  • c 替换内容
  • w 保存内容到文件中

注意: 如果只有动作没有模式 则对所有的行进行操作

sed -n ‘np’ file # n为数字 输出指定的行
sed -n ‘n,np’ file # 显示指定行的区间

案例1: sed 按照指定行进行查找

输出文件中的第三行

[root@ahui ~]#sed -n '3p' ahui.txt 
$ahui

案例2: 显示文件的最后一行

[root@ahui ~]#sed -n '$p' ahui.txt
lizhenyalizhenyalizhenya

案例3: 输出指定行的区间范围

[root@ahui ~]#sed -n '3,5p' ahui.txt 
$ahui
I teach linux.
test	

案例4: 删除第3行 只是在屏幕上删除 不会修改原文件

[root@ahui ~]#sed  '3d' id.txt 	

#删除3到5行的内容
[root@ahui ~]#sed '3,5d' id.txt

#删除第3行到文件的末尾
[root@ahui ~]#sed '3,$d' id.txt 

字符串过滤: 模糊过滤文件内容 类似 grep 模糊过滤

   按照字符串进行过滤

语法结构:
sed -n ‘/模糊过滤内容/动作’ file

案例1: 查找包含root的行

	[root@ahui ~]#head -5 /etc/passwd > passwd.txt
	[root@ahui ~]#cat passwd.txt 
	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

	[root@ahui ~]#sed -n '/root/p' passwd.txt 
	root:x:0:0:root:/root:/bin/bash

	
	[root@ahui ~]#sed -n '/bin/p' passwd.txt 
	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

案例2: sed过滤以d开头的行

[root@ahui ~]#sed -n '/^d/p' passwd.txt 
daemon:x:2:2:daemon:/sbin:/sbin/nologin

案例3: sed 过滤以bash结尾的行

[root@ahui ~]#sed -n '/bash$/p' passwd.txt 
root:x:0:0:root:/root:/bin/bash

案例4: 删除模糊过滤到的行

删除包含root的行

[root@ahui ~]#sed  '/root/d' passwd.txt 
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

案例4: 模糊过滤区间范围

sed -n ‘//,//p’
过滤从1到3之间的所有内容

[root@ahui ~]#cat passwd.txt 
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	
[root@ahui ~]#sed -n '/1/,/3/p' passwd.txt 
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
	
[root@ahui ~]#sed -n '/linux/,/blog/p' ahui.txt 
I teach linux.
test
$0 aaaa
$# bbbbbb
	I like badminton ball ,billiard ball and chinese chess!
my blog is http: blog.51cto.com 

案例5: 使用正则进行范围匹配

[root@ahui ~]#cat passwd.txt 
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

# 查找第二行的bin到 adm结尾的中间所有行
[root@ahui ~]#sed -n '/bin/,/adm/p' passwd.txt 
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

[root@ahui ~]#sed -n '/^bin/,/^adm/p' passwd.txt 
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

###企业案例: 过滤从凌晨4点到下午4点的日志

[root@linuxnc ~]# sed -n '/2021:03:50:09/,/2021:15:58:27/p' access.log
#过滤的是唯一字符串的区间
	

注意事项: 贪婪匹配

  1. 如果有开头没有结尾则显示所有的内容

  2. 如果没有开头只有结尾 则不显示任何内容

  3. 找到结尾显示到结尾 找不到就全显示出来了

增加内容 不会修改原文件

案例: a 追加内容

追加hehe到第三行的下面

[root@ahui ~]#cat 3.txt 
lidao  aaaaaaaaaaaa
ahui 123
uuuuu
test   456
ahui 123
bbbbb
ccccc
[root@ahui ~]#sed '3a hehe' 3.txt 
lidao  aaaaaaaaaaaa
ahui 123
uuuuu
hehe
test   456
ahui 123
bbbbb
ccccc

案例2: i 插入

[root@ahui ~]#cat 3.txt 
lidao  aaaaaaaaaaaa
ahui 123
uuuuu
test   456
ahui 123
bbbbb
ccccc
[root@ahui ~]#sed '2i oldgirl' 3.txt 
lidao  aaaaaaaaaaaa
oldgirl
ahui 123
uuuuu
test   456
ahui 123
bbbbb
ccccc

案例3: 替换整行

将第三行内容替换成lidao

[root@ahui ~]#cat 3.txt 
lidao  aaaaaaaaaaaa
ahui 123
uuuuu
test   456
ahui 123
bbbbb
ccccc
[root@ahui ~]#sed '3c lidao' 3.txt 
lidao  aaaaaaaaaaaa
ahui 123
lidao
test   456
ahui 123
bbbbb
ccccc

案例4: 按照模糊过滤进行 a i c

在root行的下面追加一行ahui

[root@ahui ~]#sed '/root/a ahui' passwd.txt 
root:x:0:0:root:/root:/bin/bash
ahui
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

[root@ahui ~]#sed '/root/i ahui' passwd.txt 
ahui
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

将包含root的行 替换成 ahui

[root@ahui ~]#sed '/root/c ahui' passwd.txt 
ahui
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

案例: 修改selinux配置文件

替换第7行内容 如果修改源文件 -i参数
[root@ahui ~]#sed '7c SELINUX=disabled' /etc/selinux/config
[root@ahui ~]#cat passwd.txt 
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
root:x:0:0:root:/root:/bin/bash
root:x:0:0:root:/root:/bin/bash
root:x:0:0:root:/root:/bin/bash
root:x:0:0:root:/root:/bin/bash
[root@ahui ~]#sed -i '/root/c ahui' passwd.txt 
[root@ahui ~]#cat passwd.txt 
ahui
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
ahui
ahui
ahui
ahui

案例: w 保存行到文件中

将第4行写入到id.txt中

[root@ahui ~]#sed '4w z.txt' id.txt 

过滤包含赵的行写入到文件中

[root@ahui ~]#sed '/赵/w z.txt' id.txt 
[root@ahui ~]#sed -n '4p' id.txt >> z.txt 
[root@ahui ~]#cat z.txt 
万 5ahui
万 5ahui

替换文件中的内容

语法结构:
sed ‘s#替换谁#替换成谁#’ file 替换的每一行的第一个内容
sed ‘s#替换谁#替换成岁#g’ file 替换所有内容
sed ‘s###g’ 可使用任意三个符号
sed ‘s///g’
sed ‘s@@@g’

[root@ahui ~]#head -5 /etc/passwd > passwd.txt 
[root@ahui ~]#cat passwd.txt 
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

案例1: s### 替换 只替换出现root行的 第一个root 了解

[root@ahui ~]#sed 's#root#ahui#' passwd.txt 
ahui:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
ahui:x:0:0:root:/root:/bin/bash
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

案例2: s###g 替换所有root为ahui

[root@ahui ~]#sed 's#root#ahui#g' passwd.txt 
ahui:x:0:0:ahui:/ahui:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
ahui:x:0:0:ahui:/ahui:/bin/bash
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

如果遇到替换的内容和语法相同 修改语法的符号或者使用\

[root@ahui ~]#cat passwd.txt 
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:x:0:0:root:/root:/bin/bash
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@ahui ~]#sed 's//root//ahui/g' passwd.txt 
sed: -e expression #1, char 9: unknown option to `s'
[root@ahui ~]#sed 's/\/root/\/ahui/g' passwd.txt 
root:x:0:0:root:/ahui:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
root:x:0:0:root:/ahui:/bin/bash
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

[root@ahui ~]#sed 's#/root#/ahui#g' passwd.txt 
root:x:0:0:root:/ahui:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
root:x:0:0:root:/ahui:/bin/bash
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

-i 永久替换修改源文件

[root@ahui ~]#sed -i 's#/root#/ahui#g' passwd.txt 
	[root@ahui ~]#cat passwd.txt 
	root:x:0:0:root:/ahui:/bin/bash
	bin:x:1:1:bin:/bin:/sbin/nologin
	daemon:x:2:2:daemon:/sbin:/sbin/nologin
	root:x:0:0:root:/ahui:/bin/bash
	adm:x:3:4:adm:/var/adm:/sbin/nologin
	lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

案例3: 删除文件中所有的字母

[root@ahui ~]#sed 's#[a-z]##g' passwd.txt 
::0:0::/://
::1:1::/://
::2:2::/://
::0:0::/://
::3:4:://://
::4:7::///://

案例4: 替换文件中所有的: 为空格

[root@ahui ~]#sed 's#:# #g' passwd.txt 
root x 0 0 root /ahui /bin/bash
bin x 1 1 bin /bin /sbin/nologin
daemon x 2 2 daemon /sbin /sbin/nologin
root x 0 0 root /ahui /bin/bash
adm x 3 4 adm /var/adm /sbin/nologin
lp x 4 7 lp /var/spool/lpd /sbin/nologin

案例5:只有动作对所有的内容进行查找替换

[root@ahui ~]#sed 's#root#ahui#g' passwd.txt 
ahui:x:0:0:ahui:/ahui:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
ahui:x:0:0:ahui:/ahui:/bin/bash
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

sed的动作由p 或者 d 替换成 s###g

[root@ahui ~]#sed '4s#root#ahui#g' passwd.txt
root:x:0:0:root:/ahui:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
ahui:x:0:0:ahui:/ahui:/bin/bash
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

 [root@ahui ~]#sed '1,4s#root#ahui#g' passwd.txt
ahui:x:0:0:ahui:/ahui:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
ahui:x:0:0:ahui:/ahui:/bin/bash
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

通过模糊过滤内容进行替换

[root@ahui ~]#sed '/root/s#bash#hehe#g' passwd.txt 
root:x:0:0:root:/ahui:/bin/hehe
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
root:x:0:0:root:/ahui:/bin/hehe
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

sort排序命令

sort 默认按照第一列的内容排序
语法结构:
cat file| sort
sort file
参数:

  • -n 按照数字正序排序
  • -r 逆序排序
  • -rn 按照数字进行逆序排序 从大到小排序
  • -k 指定列数
  • -k2 指定第二列
  • -rnk2 将第二列进行数字的逆序排序
[root@ahui ~]#cat 3.txt
lidao
ahui
uuuuu
test
ahui
bbbbb
lidao
ahui
ccccc

sort可以让相同的单词挨着

[root@ahui ~]#sort 3.txt 
bbbbb
ccccc
lidao
lidao
ahui
ahui
ahui
test
uuuuu

案例: sort按照数字的正序排序 从小到大排序

[root@ahui ~]#cat 4.txt |sort -n
1
2
12
20
22
100

案例: 按照数字的逆序排序

[root@ahui ~]#cat 4.txt |sort -rn
100
22
20
12
2
1

案例: 指定第2列进行数字的正序排序

[root@ahui ~]#cat 4.txt |sort -nk2
bb 1
aa 2
aa 12
cc 20
yy 22
dd 100

案例: sort -rnk2 指定第2列进行数字的逆序排序

[root@ahui ~]#cat 4.txt |sort -rnk2
dd 100
yy 22
cc 20
aa 12
aa 2
bb 1

uniq 去重统计

参数:

  • -c 显示重复的次数
[root@ahui ~]#sort 3.txt |uniq -c
  1 bbbbb
  1 ccccc
  2 lidao
  3 ahui
  1 test
  1 uuuuu

sort接收其他命令的输出

[root@ahui ~]#cat 3.txt |sort |uniq -c
  1 bbbbb
  1 ccccc
  2 lidao
  3 ahui
  1 test
  1 uuuuu

如果为字符串sort默认按照 第一列的 首字母进行排序

[root@ahui ~]#cat 3.txt|sort
bbbbb	 60
ccccc	 3
lidao    10
lidao	 90
ahui	 10
ahui   20
ahui	 50
test	 10
uuuuu	 30

如果为数字 默认则按照数字的第一列进行排序

[root@ahui ~]#cat 4.txt|sort 
1
100
12
2
20
22

案例统计出文件中每个单词出现的次数

第一步: 替换文件中特殊符号和数字

[root@ahui ~]#sed 's#[:x/0-9]# #g' passwd.txt |sort
adm       adm  var adm  sbin nologin
bin       bin  bin  sbin nologin
daemon       daemon  sbin  sbin nologin
lp       lp  var spool lpd  sbin nologin
root       root  ahui  bin bash
root       root  ahui  bin bash

第二步: 将替换结果按一列显示 xargs -n1

[root@ahui ~]#sed 's#[:x/0-9]# #g' passwd.txt|xargs -n1
root
root
ahui
bin
bash
bin
bin
bin
sbin

第三步: 显示后的结果进行排序 sort

[root@ahui ~]#sed 's#[:x/0-9]# #g' passwd.txt|xargs -n1|sort
	adm
	adm
	adm
	bash
	bash
	bin
	bin
	bin
	bin
	bin
	daemon
	daemon

第四步: uniq 去重统计重复的次数

[root@ahui ~]#sed 's#[:x/0-9]# #g' passwd.txt|xargs -n1|sort|uniq -c
  3 adm
  2 bash
  5 bin
  2 daemon
  2 lp
  1 lpd
  4 nologin
  2 ahui
  4 root
  5 sbin
  1 spool
  2 var

第五步: 第一列数字进行逆序排序

  [root@ahui ~]#sed 's#[:x/0-9]# #g' passwd.txt|xargs -n1|sort|uniq -c|sort -rn
  5 sbin
  5 bin
  4 root
  4 nologin
  3 adm
  2 var
  2 ahui
  2 lp
  2 daemon
  2 bash
  1 spool
  1 lpd

获取到值只取前3个

[root@ahui ~]#sed 's#[:x/0-9]# #g' passwd.txt|xargs -n1|sort|uniq -c|sort -rn|head -3      
5 sbin
5 bin
4 root

统计单词数量:

1.保证文件中只有单词 sed替换
2.按列显示
3.使用sort进行排序
4.去重统计
uinq 去重

企业案例: 统计web日志出现访问ip地址最多的前10个

[root@linuxnc ~]# cat ip.txt |sort |uniq -c|sort -rn|head
 18 8.219.71.118
 14 39.98.71.86
 13 47.101.187.185
 12 39.100.43.181
  9 8.130.24.112
  8 66.249.70.52
  8 106.75.211.195
  7 66.249.70.54
  7 124.220.24.137
  6 61.147.15.67

小结:

  1. grep

    • -v 取反
    • -E 支持扩展正则 | + () grep -E 相当于 egrep
    • -r 递归过滤
  2. sed
    [1]. 动作:
    p print 输出 重点
    d delete 删除 重点
    a 追加内容
    i 插入内容
    c 替换内容
    w 保存内容到文件中
    [2]. 查找:
    (1) 指定行查找
    1. sed -n ‘3p’ file
    2. sed -n ‘3,5p’ file
    3. sed -n ‘3,$p’ file
    4. sed -n ‘3d’ file
    (2).模糊查找
    1. sed -n ‘/内容/p’ file
    2. sed ‘/内容/d’ file
    3. sed -n ‘//,//p’ file
    [3]. 替换:
    对文件中所有包含xx内容进行替换
    sed ‘s###g’ file
    模式+动作
    sed ‘3s###g’ file
    sed ‘3,5s###g’ file
    sed ‘/找谁/s###g’ file
    sed ‘//,//s###g’ file

  3. sort 默认按照第一列的内容排序
    -n 数字正序排序
    -r 逆序排序
    -k 选择列
    -rn 数字的逆序排序
    -rnk2 第二列数字的逆序排序

  4. uniq 去重统计
    -c 统计去重单词的次数

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值