首页 > 其他分享 >24.11.14 awk

24.11.14 awk

时间:2024-12-28 17:22:41浏览次数:9  
标签:oldboyedu sbin 14 nologin 24.11 awk adm root

awk的作用 GNU/AWK

awk本身就是一门编程语言
1、取行
2、取列
3、模糊过滤
4、判断比较
   字符串比对
   数字比对
5、支持if for while 数组等
6、格式化输出

语法结构:awk ‘模式’ 文件  #默认就是输出  不需要添加动作
        awk ‘模式+动作’ 文件
        其他命令的输出|作为awk命令的输入
        df -h | awk ‘NR==2’  #取出df -h 的第二行

awk取行

语法结构:sed -n ‘3p’ 文件  #取出文件的第三行
        awk ‘NR==3’ 文件  #取出文件的第三行
NR awk的内置变量 存储着每行的行号
符号
==  等于第几行
>  大于第几行
>=  大于等于第几行
<  小于第几行
<=  小于等于第几行
!=  不等于第几行
&&  并且 类似于sed的1,3
||  或者

awk默认就是输出的动作  如果只输出则不需要加print
[root@oldboyedu ~]# awk 'NR==1' passwd 
root:x:0:0:root:/root:/bin/bash
[root@oldboyedu ~]# awk 'NR==1{print}' passwd 
root:x:0:0:root:/root:/bin/bash
[root@oldboyedu ~]# awk 'NR==1||NR==5{print}' passwd 
root:x:0:0:root:/root:/bin/bash
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

eg:awk取出文件的第三行
[root@oldboyedu ~]# awk 'NR==3' passwd 
daemon:x:2:2:daemon:/sbin:/sbin/nologin

eg:awk取出文件大于7的行
[root@oldboyedu ~]# awk 'NR>7' passwd 
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

eg:awk取出文件中小于3的行
[root@oldboyedu ~]# awk 'NR<3' passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

eg:awk取出文件中小于等于3的行
[root@oldboyedu ~]# awk 'NR<=3' 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

eg:awk取出不等于1的行
[root@oldboyedu ~]# awk 'NR!=1' passwd 
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

eg:查找出大于3并且小于5的行
[root@oldboyedu ~]# awk 'NR>3&&NR<5' passwd 
adm:x:3:4:adm:/var/adm:/sbin/nologin

eg:输出文件中的第一行或者第5行
[root@oldboyedu ~]# awk 'NR==1||NR==5' passwd 
root:x:0:0:root:/root:/bin/bash
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

模糊过滤

语法结构:支持正则
        sed -n ‘//p’ 文件
        awk '//' 文件  #模糊的查找文件中的字符串
        awk ‘//,//’ 文件  #区间范围
        
eg:找出包含root的行
[root@oldboyedu ~]# awk '/root/' passwd 
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

eg:找出包含bash的行
[root@oldboyedu ~]# awk '/bash/' passwd 
root:x:0:0:root:/root:/bin/bash

eg:找出以a开头的行
[root@oldboyedu ~]# awk '/^a/' passwd 
adm:x:3:4:adm:/var/adm:/sbin/nologin

eg:找出文件中包含root或adm的行
[root@oldboyedu ~]# awk '/root|adm/' passwd 
root:x:0:0:root:/root:/bin/bash
adm:x:3:4:adm:/var/adm:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin

eg:找出以s或者以b开头的行
[root@oldboyedu ~]# awk '/^[bs]/' passwd 
bin:x:1:1:bin:/bin:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

eg:按照区间过滤 常用于过滤日志中的时间范围
[root@oldboyedu ~]# awk '/adm/,/halt/' passwd 
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

[root@oldboyedu ~]# df -h | awk 'NR>3&&NR<8'
tmpfs                  475M   19M  456M    4% /run
tmpfs                  475M     0  475M    0% /sys/fs/cgroup
/dev/mapper/klas-root   47G  4.8G   43G   11% /
tmpfs                  475M  4.0K  475M    1% /tmp

[root@oldboyedu ~]# df -h |awk '/run$/,/tmp$/'
tmpfs                  475M   19M  456M    4% /run
tmpfs                  475M     0  475M    0% /sys/fs/cgroup
/dev/mapper/klas-root   47G  4.8G   43G   11% /
tmpfs                  475M  4.0K  475M    1% /tmp

awk取列

语法结构:awk ‘{print $1}’ 文件 #取出文件中的第一列
默认按照空格或者tab键分隔成列
如果没有空格或tab键,awk会将整行看成一列
在awk中一切在动作中的字符串都被看做是变量,加上双引号则视为普通的字符串

awk内置变量
$0  #表示整行
$1  #表示文件的第一列
$2  #表示文件的第二列
,  #逗号表示空格
NF  #表示每一行最后一列的列号

eg:取出文件中的第一列
[root@oldboyedu ~]# cat 6.txt
a   b
a   b   c
b   c   d
q   w   e   r
[root@oldboyedu ~]# awk '{print $1}' 6.txt 
a
a
b
q

eg:取出文件中的第3列
[root@oldboyedu ~]# awk '{print $3}' 6.txt 

c
d
e

eg:取出文件中的第一列和第三列
[root@oldboyedu ~]# awk '{print $1,$3}' 6.txt 
a 
a c
b d
q e

[root@oldboyedu ~]# awk '{print $1" "$3}' 6.txt 
a 
a c
b d
q e

[root@oldboyedu ~]# awk '{print $1","$3}' 6.txt 
a,
a,c
b,d
q,e
#""还原特殊字符原本的含义

eg:取出文件文件中的第3列和第1列
[root@oldboyedu ~]# awk '{print $3,$1}' 6.txt 
 a
c a
d b
e q

eg:取出文件中的最后一列
[root@oldboyedu ~]# awk '{print $4}' 6.txt 



r

eg:取出文件中的最后一列
[root@oldboyedu ~]# awk '{print $NF}' 6.txt 
b
c
d
r
#NF表示取得是每一行的最后一个字符

[root@oldboyedu ~]# cat 6.txt 
a   b
a   b   c
b   c   d
q   w   e   r
[root@oldboyedu ~]# awk '{print NF}' 6.txt 
2
3
3
4
[root@oldboyedu ~]# awk '{print $NF}' 6.txt 
b
c
d
r

awk支持数值的运算,即加减乘除
[root@oldboyedu ~]# awk '{print "a"}' 6.txt 
a
a
a
a

[root@oldboyedu ~]# awk '{print 10+1}' 6.txt 
11
11
11
11

eg:获取文件的倒数第二列
[root@oldboyedu ~]# cat 6.txt 
a   b   y
a   b   c
b   c   d
q   w   e
[root@oldboyedu ~]# awk '{print $(NF-1)}' 6.txt 
b
b
c
w

[root@oldboyedu ~]# awk '{print $0}' 6.txt 
a   
a   b  
b   c   d
q   w   e   c
[root@oldboyedu ~]# awk '{print $(NF-1)}' 6.txt  
a   
a
c
e

[root@oldboyedu ~]# df -h |awk '{print $(NF-1)}'
已用%
0%
0%
4%
0%
11%
1%
15%
0%

eg:取出passwd文件中的第一列
[root@oldboyedu ~]# awk '{print $1}' 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

awk指定分隔符

语法结构:awk -F: '{print $1}'  #第一种指定分隔符方式
         awk -F ":" '{print $1}'  #第二种指定分隔符方式
         
eg:取出passwd中的用户名 以冒号分隔
[root@oldboyedu ~]# awk -F: '{print $1}' passwd 
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator

如果指定了分隔符,默认的空格和tab键分隔符会失效
[root@oldboyedu ~]# cat aa.txt 
root: x :  0:0:  ro ot
[root@oldboyedu ~]# awk -F: '{print $NF}' aa.txt 
  ro ot

eg:取出passwd中的第六列
[root@oldboyedu ~]# awk -F: '{print $6}' passwd 
/root
/bin
/sbin
/var/adm
/var/spool/lpd
/sbin
/sbin
/sbin
/var/spool/mail
/root

eg:取出passwd中的第一列和最后一列 用户名和bash解释器
[root@oldboyedu ~]# awk -F ":" '{print $1"\t"$NF}' passwd 
root	/bin/bash
bin	/sbin/nologin
daemon	/sbin/nologin
adm	/sbin/nologin
lp	/sbin/nologin
sync	/bin/sync
shutdown	/sbin/shutdown
halt	/sbin/halt
mail	/sbin/nologin
operator	/sbin/nologin

eg:统计成绩
[root@oldboyedu ~]# cat count.txt 
张三  linux96  100
李四  linux96  22
老王  linux96  33
张赛  linux96  44
[root@oldboyedu ~]# awk '{print $1,$NF}' count.txt 
张三 100
李四 22
老王 33
张赛 44

eg:按照成绩的逆序排序
[root@oldboyedu ~]# awk '{print $1,$NF}' count.txt | sort -rnk2
张三 100
张赛 44
老王 33
李四 22

eg:万物皆可分隔
[root@oldboyedu ~]# echo oldboy | awk -Fd '{print $1}'
ol
[root@oldboyedu ~]# echo oldboy | awk -Fdb '{print $1}'
ol
[root@oldboyedu ~]# echo oldboy | awk -Fdb '{print $1,$2}'
ol oy

eg:指定多个字符为分隔符
[root@oldboyedu ~]# cat aa.txt 
root:x:0:0:root:/root:/bin/bash
[root@oldboyedu ~]# awk -F ":/" '{print $2}' aa.txt 
root

eg:指定冒号或者/分隔符
[root@oldboyedu ~]# cat aa.txt 
root:x:0:0:root:/root:/bin/bash
[root@oldboyedu ~]# awk -F ":|/" '{print NF}' aa.txt 
10
[root@oldboyedu ~]# awk -F ":|:/" '{print NF}' aa.txt 
7
[root@oldboyedu ~]# awk -F ":|:/" '{print $NF}' aa.txt 
bin/bash

eg:使用任意单个字符串作为分隔符 [] 任意单个含义
[root@oldboyedu ~]# cat aa.txt 
root:x:0:0:root:/root:/bin/bash
[root@oldboyedu ~]# awk -F"[:/]" '{print NF}' aa.txt 
10

eg:使用正则+
[root@oldboyedu ~]# awk -F"[:/]+" '{print NF}' aa.txt 
8
[root@oldboyedu ~]# grep '[:/]' aa.txt -o
:
:
:
:
:
/
:
/
/
[root@oldboyedu ~]# egrep '[:/]+' aa.txt 
root:x:0:0:root:/root:/bin/bash
[root@oldboyedu ~]# egrep '[:/]+' aa.txt -o
:
:
:
:
:/
:/
/

[root@oldboyedu ~]# cat bb.txt 
--:-/test--/::oldboy-oldgirl
[root@oldboyedu ~]# awk -F"[-:/]" '{print $6}' bb.txt 
test
[root@oldboyedu ~]# awk -F"[-:/]" '{print $11}' bb.txt 
oldboy
[root@oldboyedu ~]# awk -F"[-:/]+" '{print $2}' bb.txt 
test
[root@oldboyedu ~]# awk -F"[-:/]+" '{print $3}' bb.txt 
oldboy

awk模式+动作

模式:通过NR找出指定的行 awk ‘NR==5’
     通过模糊过滤的方式找出行 awk ‘/root/’
     awk ‘NR==5{print $1}’
     
eg:输出文件中的第2行的第2列
[root@oldboyedu ~]# cat 6.txt 
a   
a   b  
b   c   d
q   w   e   c
[root@oldboyedu ~]# awk 'NR==2{print $2}' 6.txt 
b

eg:输出文件中大于第二行的最后一列内容
[root@oldboyedu ~]# awk 'NR>2{print $NF}' 6.txt 
d
c

[root@oldboyedu ~]# awk 'NR>2{print $1,$NF}' 6.txt 
b d
q c

eg:指定分隔符输出第一行的第一列
[root@oldboyedu ~]# awk -F: 'NR==1{print $1}' passwd 
root

eg:输出包含adm的行的第三列
[root@oldboyedu ~]# awk -F: '/adm/{print $3}' passwd 
3

#awk面试题:
我有一个文档,取出文件中的第五行的第三列
[root@oldboyedu ~]# awk 'NR==5{print $3}' 文件

eg:取出包含adm行的第三行的第三列
[root@oldboyedu ~]# awk '/adm/' passwd 
adm:x:3:4:adm:/var/adm:/sbin/nologin
adm:x:30:4:adm:/var/adm:/sbin/nologin
adm:x:36:4:adm:/var/adm:/sbin/nologin
[root@oldboyedu ~]# awk '/adm/{print $3}' passwd 



[root@oldboyedu ~]# awk -F: '/adm/{print $3}' passwd 
3
30
36
[root@oldboyedu ~]# awk -F: '/adm/{print $3}' passwd |tail -1
36

比较表达式

##按照字符比对查找
eg:查找文件中第一列等于root的行
[root@oldboyedu ~]# awk -F: '$1=="root"' passwd 
root:x:0:0:root:/root:/bin/bash

eg:使用正则匹配字符串
[root@oldboyedu ~]# awk -F: '$1~"^r"' passwd 
root:x:0:0:root:/root:/bin/bash
[root@oldboyedu ~]# awk -F: '$1~"n$"' passwd 
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

eg:匹配最后一列以n结尾的行
[root@oldboyedu ~]# awk -F: '$NF~"n$"' passwd 
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
adm:x:30:4:adm:/var/adm:/sbin/nologin
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
adm:x:36:4:adm:/var/adm:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin

eg:对第一列root的行进行取反
[root@oldboyedu ~]# awk -F: '$1!="root"' passwd 
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
adm:x:30:4:adm:/var/adm:/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
adm:x:36:4:adm:/var/adm:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin

eg:对开头是r的行进行取反
[root@oldboyedu ~]# awk -F: '$1!~"^r"' passwd 
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
adm:x:30:4:adm:/var/adm:/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
adm:x:36:4:adm:/var/adm:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin

##数字比对
eg:第三列等0的行
[root@oldboyedu ~]# awk -F: '$3==0' passwd 
root:x:0:0:root:/root:/bin/bash

eg:第三列大于5的行
[root@oldboyedu ~]# awk -F: '$3>5' passwd 
adm:x:30:4:adm:/var/adm:/sbin/nologin
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
adm:x:36:4:adm:/var/adm:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin

eg:考试成绩取出大于90分的
[root@oldboyedu ~]# cat count.txt 
张三  linux96  100
李四  linux96  22
老王  linux96  33
张赛  linux96  44
[root@oldboyedu ~]# awk '$3>90' count.txt 
张三  linux96  100

eg:统计不及格的同学
[root@oldboyedu ~]# awk '$3<60' count.txt 
李四  linux96  22
老王  linux96  33
张赛  linux96  44
[root@oldboyedu ~]# awk '$3>90' count.txt | wc -l
1
[root@oldboyedu ~]# awk '$3<60' count.txt | wc -l
3

eg:查看成绩低于90,高于60的同学
[root@oldboyedu ~]# cat count.txt 
张三  linux96  100
李四  linux96  22
老王  linux96  33
张赛  linux96  44
张马  linux96  77
[root@oldboyedu ~]# awk '$3>60&&$3<90' count.txt 
张马  linux96  77

##了解
[root@oldboyedu ~]# awk -F: 'BEGIN{print "用户名称"}{print $1}' passwd 
用户名称
root
bin
daemon
adm
lp
adm
sync
shutdown
halt
adm
mail
operator

[root@oldboyedu ~]# awk -F: 'BEGIN{print "用户名称"}{print $1}END{print "ok...."}' passwd 
用户名称
root
bin
daemon
adm
lp
adm
sync
shutdown
halt
adm
mail
operator
ok....

[root@oldboyedu ~]# awk -F: 'BEGIN{print 10+10}' 
20
[root@oldboyedu ~]# awk -F: 'BEGIN{print 10-10}' 
0
[root@oldboyedu ~]# awk -F: 'BEGIN{print 10*10}' 
100
[root@oldboyedu ~]# awk -F: 'BEGIN{print 10^10}' 
10000000000

标签:oldboyedu,sbin,14,nologin,24.11,awk,adm,root
From: https://www.cnblogs.com/wjhit/p/18637682

相关文章

  • 24.11.17 软件安装和find
    yum方式安装前提:必须保证可以联网特点:类似于手机软件商店直接安装软件 类似于Windows的360软件管家搜索软件--->点击安装自动帮我们安装好 安装位置是默认的,我们不能定义位置 自动解决依赖问题依赖:某个软件依赖于另一个软件 类似于吃饭点外卖打包好和饭已经做好 /etc......
  • 24.11.18 系统优化
    修改默认的yum仓库默认仓库都是国外的,下载软件的速度慢CentOS默认仓库是随机的 可能是阿里云,清华大学,重庆大学,也可能是北电 个人也可以搭建yum仓库(软件的仓库) 第一步:找到阿里云的仓库链接https://opsx.alibaba.com/第二步:备份默认的仓库mv/etc/yum.repos.d/CentOS-Bas......
  • 24.11.19 定时任务
    定时任务1、什么是定时任务? 闹钟/每天定时7点半8点 在固定的时间做什么事情2、定时任务作用 国定时间同步时间 数据备份(备份的服务器)重要的数据备份3份公司备份服务器笔记本移动硬盘网盘一份 先打包然后再备份(代码文件上百个上千个)占用磁盘io降低传输速度iin......
  • 24.11.20 磁盘管理
    磁盘外部结构磁盘分类: 固态硬盘:内部是主板和U盘类似 机械硬盘:盘片主轴传动手臂做机械运动类似DVD Nvme硬盘PCI-E接口大小分类: 3.5英寸:台式机 2.5英寸:服务器笔记本 接口类型: IDE接口#淘汰 SCSI接口#淘汰 SATA接口#台式机笔记本 SAS接口#企业服......
  • 人工智能短视频内容理解与生成技术在美团的创新实践14
     1.背景美团围绕丰富的本地生活服务电商场景,积累了丰富的视频数据。美团场景下的短视频示例上面展示了美团业务场景下的一个菜品评论示例。可以看到,视频相较于文本和图像可以提供更加丰富的信息,创意菜“冰与火之歌”中火焰与巧克力和冰淇淋的动态交互,通过短视频形式进......
  • 人工智能短视频内容理解与生成技术在美团的创新实践14
     1.背景美团围绕丰富的本地生活服务电商场景,积累了丰富的视频数据。美团场景下的短视频示例上面展示了美团业务场景下的一个菜品评论示例。可以看到,视频相较于文本和图像可以提供更加丰富的信息,创意菜“冰与火之歌”中火焰与巧克力和冰淇淋的动态交互,通过短视频形式进......
  • Linux文本处理的利剑:grep、sed和awk的深度解析与应用
    前言:在Linux系统管理与开发工作中,文本处理是一项核心技能。面对海量日志文件、配置文件或数据文件,如何快速提取、分析或修改所需信息,成为衡量一个Linux用户熟练度的重要标准。Linux系统中的grep、sed和awk工具,因其强大且灵活的文本处理能力,被冠以“文本处理三剑客”的美誉。它们不......
  • 2024-2025-1 20241417 《计算机基础与程序设计》第十四周学习总结
    2024-2025-120241417《计算机基础与程序设计》第十四周学习总结作业信息这个作业属于哪个课程<班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>2024-2025-1计算机基础与程序设计第十四周作业这个作业的目标<《C语言程序设计......
  • P11454 [USACO24DEC] 2D Conveyer Belt S
    题目大意详细题目传送门一个\(n\cdotn\)的网格\(a\)。每个网格有传送带。其中L,R,U,D就分别代表把传送带上的物体移动到左右上下方向的格子。如果送出了边界就代表送出去了。然后还有?是代表还没有在这个网格上建传送带。\(Q\)次操作,每一次将\(a_{x,y}\)从原先的?......
  • 数据恢复软件下载_R-Studio V9.4.191420中文绿色版下载
    软件介绍数据恢复软件R-Studio绿色版是一款来自于加拿大的功能强大、经济高效的数据恢复软件,它将最先进的文件恢复和磁盘修复技术与直观的用户界面进行联合,可为企业和专业级数据恢复专家提供所需工具。不论是有经验的数据恢复专业人员,还是入门级用户都不会有使用方面的阻碍。R-S......