文件处理

1.处理方式

匹配

正则表达式

egrep

awk

sed

2.文件中的处理字符

\n  新行符 换行

\t  制表符 tab键 缺省8个空格

\b  退格符 backspace键 退格键

\v  竖直制表符

\r  替代符  liu\rs =siu  liu\rqwer =qwer 后面的替代依次前面的

 

3.字符处理

linux中的配置文件都是文本文件,为了批量任务、自动任务、选择性的任务等,需要对文本文件进行结果筛选、结果更改等操作,这就需要对这些文件进行处理。

经常用于处理文本文件的命令有: head  tail  less cat wc  sort cut等。Linux系统中处理文本内容强大的工具是结合正则表达式的命令grep(egrep)、awk、sed

4.常用命令

1.head、tail命令

head  -n  3   f1   ---显示文档的前3行

head  -n  -3  f1   ---不显示文档的最后3行

tail  -n  3  f1   ---显示文档的最后3行

tail  -n  +3  f1   ---从第3行开始,显示到文档结尾

 

tail -n +3 f1 | head -n 3

 

2.wc统计命令

wc  -l  f1   统计文档中的行数

wc  -c 统计字符数    

wc  -w 统计单词数

wc  --help   查看帮助

 

ll  /etc/  |  grep "^d"  |  wc -l   ---统计/etc/下的目录数

 

3.sort命令

对指定的文本文件的内容排序,排序的结果输出到屏幕上,默认的字段分隔是空格或制表符。对源文件没有影响。

格式:

sort [参数] [文件名1 文件命2 ...... 文件名N]

sort  -nr  -k 2  f2   ---排序显示文档中内容  -n 按数字大小排序   -r  按降序显示,默认升序    -k 指定按照第几列排序

sort -t ":" -nr  -k 2  f2   ---  -t 指定列的分割符,不写默认以空格分隔

sort  -nru  -k 2  f2   --- -u表示去除重复行

4.cut命令

按列截取

cut  -d " "  -f  2  f2   ---截取显示文档的第二列,-d 指定分隔字符   -f 指定显示第几列

-b, --bytes=LIST

输出这些字节

-c, --characters=LIST

输出 这些 字符

使用man查看

5.grep命令

命令格式和作用

grep命令:将和指定的模式匹配的行显示出来。

grep  [选项]  模式  [文件名...]

 

grep命令将文件中的每一行和“模式”匹配,有和“模式”定义的内容先符合的行, 

其匹配的结果为“真”这一行选中,显示在屏幕上。

 

“模式”可以有多种形式,可以是具体字符,也可以是正则表达式。

egrep  [选项]  模式  [文件名...]  --正则表达式扩充功能

grep -E [选项]  模式  [文件名...]  --正则表达式扩充功能

 

grep  "name"  f1   ---筛选包含"name"的行

grep  "^name"  f1   ---筛选以"name"开头的行

grep  "name$"  f1   ---筛选以"name"结尾的行

 

grep  "^name$"  f1  ---筛选只有"name"的行

grep  "^$"  f1   ---筛选空行

ll  /etc/  |  grep  "^d"    ---筛选显示/etc/下所有目录,注:ll后第一个字符为d的表示目录

grep  -i  "name"  f1   ---  -i 表示忽略大小写

grep  -v  "name"  f1   ---  -v 表示显示不包含指定字符的行

grep  -n  "name"  f1   ---  -n 表示筛选结果显示所在的行号

grep "^name.*name$"  f1  ---表示筛选以name开头以name结尾的行

5.正则表达式

1.概念

正则表达式(命令中的PATTERN都可以使用)是使用  具体的字符+特殊字符 组成的组合来匹配文本中出现的内容。这个组合就是正则表达式。这些特殊字符称为元字符,他们是描述字符的字符。

2.正则表达式的元字符

^  表示匹配开头,但如果出现在[](参见后续内容)中,表示对集合的内容取反

$  表示匹配结尾

*  是占位符,表示其前的表达式没有出现或任意多次重复(包括数字、符号等),优先级别最高  ab*c-> ac  abc abbc abbbc   \(ab\)*c->c abc ababc abababc

+  是占位符,表示其前的表达式出现一次或任意多次重复(包括数字、符号等),优先级别最高

?  是占位符,表示其前的表达式没有出现或出现一次(包括数字、符号等),优先级别最高

.  是占位符,仅表示一个字符(包括数字、符号等)

[ ] 表示集合中的一个元素,如[abcd]匹配a  b c d中的任何一个字符,但[^abcd]表示匹配除a b c d四个字符之外集合(包括的范围很广)

( ) 括号中的内容组成分组

{ } 是重复标记,标识该符号(大括号或花括号)之前的字符重复出现了多少次。括号内部用2个数字表示范围{3,7}表示之前的字符出现3~7次.但Linux中的grep命令仅支持正则表达式中的元字符,要支持[] () {} ?等,要用扩展正则表达式支持功能,即使用-E 参数或使用egrep命令,另外grep命令系列(包括egrep、fgrep)也不支持{}中范围的表示方法,这时后面的}可用转意字符表示,[1-9]{2,3\}

ab{3}c -> abbbc      ab{2,4}c -> abbc abbbc abbbbc   ab{2,}c ->abbc abbbc abb...bc  a{,2}c ->ac abc abbc

\   转义字符

\b  匹配字符串的边界(即头尾)位置,即开头和结尾,但由于\在linix中有特殊含义,所以使用时要用\\b表示,如\\b[a-f],表示匹配以a b c d e f字母开头的字符串。而 [a-f]\\b 表示以a b c d e f字母结尾的字符串。

\B  匹配排除字符串边界的位置,但由于\在linix中有特殊含义,所以使用时要用\\B表示,如\\B[a-f]表示匹配a b c d e f字母不在开头位置的字符串。但这种情况要注意像aabc bdef也可以匹配上,这种匹配实际是匹配的aabc中的第二个a,将第一个a当作其他字符。

"" - , . @字符串分隔符

 

|  表示二选一,它的优先级最低  也作用于表达式:表达式1 | 表达式2

~   用于两个表达式匹配。  

!~ 取反,即不匹配

3.案例 解释

^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)* @ [a-zA-Z0-9-]+\.([a-zA-Z]{2,3})$   匹配有效的邮件地址

4.解释:

1  ^                 //匹配开始位置

2    [_a-zA-Z0-9-]     //定义了集合,匹配集合中的一个元素,即_ - 0-9 a-z A-Z中的任意一个

3    +               //匹配前面的字符出现1次或多次(排除0次)

4      (             //定义分组开始

5         \.         //只匹配 . 符号,因为 . 在正则表达式中有特殊含义,用转义字符处理

6       [_a-zA-Z0-9-]  // 集合

7         +          //

8       )             //分组结束。组定义了匹配一个.和一个或多个字符数字组成的组,如 .163  .com  .net  .cn等都能匹配上

9       *            //匹配之前的分组出现0次或多次。从开始到此处,定义了匹配邮箱名的匹配,可以匹配诸如:abc  a_123 123-b asd123.qwe 1_abc.asd.kb2 等名字

10    @               //匹配 @ 符号

11    [a-zA-Z0-9-]     //集合

12    +               //匹配前面的字符出现1次或多次(排除0次)

13     \.              //只匹配 .

14     (              // 分组2

15        [a-zA-Z]    // 集合

16        {2,3\}      //集合中的元素出现2到3次

17      )            // 分组2结束

18 $               //匹配结束位置。

4.正则表达式还支持POSIX字符集

[[:digit:]]  --使用POSIX字符集

[:alnum:] 字母数字集合    [0-9a-zA-Z]

[:alpha:] 字母集合

[:blank:] 空格和制表符

[:cntrl:] 控制字符

[:digit:] 数字[0-9]

[:graph:] 可视和可显示的字符(空格可显示但不可见)

[:lower:] 小写字符

[:upper:] 大写字符

[:print:] 可显示字符(非控制字符)

[:punct:] 标点符号

[:space:] 空字符 (空格、制表符、跳行)

[:xdigit:] 十六进制字符

POSIX非标准类:[:ascii:],非标准在很多命令中不支持,如:awk  sed

5.正则表达式不能独立运行

Linux系统中,对正则表达式的支持体现在命令中。命令的选项参数中包含“PATTERN”字样的,就支持正则表达式,其中的PATTERN就是正则表达式的表示,这样的命令很多,著名的有grep awk和sed。使用正则表达式,可以增强这些命令的匹配能力。

6.正则表达式练习:

1、mydir目录下,有很多文件,显示其中大小排在第三到第五的文件。(按从大小排列和从小到大排列)

ls -l | grep -v total*  | sort -nr -k 5 | tail -n +3 | head -n +3从大到小

 

ls -l | grep -v total*  | sort -n -k 5 | tail -n +3 | head -n +3从小到到

 

2、文件customer保存的是用户的手机号和用户号,其中,手机号使用xxx-xxx-xxxx形式保存,找出用户手机号不规范的用户行。

egrep -v  \(\([0-9]{3}\)-\([0-9]{3}\)-\([0-9]{4}\)\)$ customer

 

3、文件customer保存的用户的手机号、用户名和地址。其中,个字段的分割是空格,找住在北京建国路姓李名字中有林的用户行。

egrep ^李\(*林*\) customer | egrep \(*北京建国路*\)$

 

 

7.awk命令:

awk是一种解释程序,因此,会按从左到右对各项解释执行。

awk将文件的每一行视作一条记录,对每条记录以“模式”做匹配,匹配结果为"真",实施“动作”。

动作是linux的命令,可以由一条命令组成,也可以多条命令。

多条命令时,多个命令在一行中,命令之间用";"隔开,多个命令也可以在多行,每行一条命令,在这种情况下,为避免将多行的命令认作是和awk命令平级的命令,所以,模式动作对用''引起来。

 

awk中的"模式"可以省略。这种情况表示对文件的每一条记录都实施动作。意为每一条的记录匹配结果都为“真”。

awk中的动作也可以省略。这种情况下表示对匹配模式为“真”的记录输出到屏幕上。

awk中“模式”和“动作”二者必须有一个,不能全省略。也就是''中必有内容。

 

(1)格式:

awk  [选项]   ‘[模式] [{动作}]’ 文件1 文件2 ...... 文件N

 

(2)参数变量

$ + 数字 :表示第几个字段,$1 ,$2 表示第 1 ,2 个字段,

NF 表示当前行有多少个字段,因此$NF就代表最后一个字段,$(NF-1)代表倒数第二个字段。

NR 表示当前处理的是第几行

FILENAME:当前文件名

FS:字段分隔符,默认是空格和制表符。

RS:行分隔符,用于分割每一行,默认是换行符。

OFS:输出字段的分隔符,用于打印时分隔字段,默认为空格。

ORS:输出记录的分隔符,用于打印时分隔记录,默认为换行符。

OFMT数字输出的格式,默认为%.6g。

(3)例:

省略“模式”:

awk '{print "test messages"}' ref1

 

省略"动作":

awk '/name/' ref1

           

awk的"模式"种类繁多,可以使用Linux的条件判断,也可以使用正则表达式,使用正则表达式要使用 /正则表达式/ 的方式。

 

awk的"动作"可以有多个:

{动作1}{动作2}{.......}{动作N}

 

多个动作相当于针对每一条记录执行多个动作。这时"模式"匹配上的记录只实施第一个动作语句。

第二个动作及之后的动作对所有的记录都作用。这种方式和下述方式相同:

awk  [选项]  ‘模式  {动作}

{动作2}

......

{动作N}'   ref1

 

 

若想为多个动作增加模式选择,使用

'模式1 {动作1};模式2 {动作2};......;模式N{动作N}' ref1各模式动作组之间用“;”号分开。

           

awk的"模式""动作"对也可以存放在文件中,awk使用-f选项指定从该文件去解释执行的内容:

awk [选项] -f awk_program  ref1

 

awk_program文件中保存着"模式""动作"对。

如:

/name/ {print "awk_program"}          

 

(4)awk处理文件:

 awk命令的输入来自指定的文件,也可以是键盘的输入(标准输入)或其他命令的输出(使用管道)。

如果定义多个文件,awk会依次读入、处理每个文件。当前正在处理的文件名,会保存在预定义好的保留变量FILENAME中。

 

awk会把文件的每一行作为一条记录,依次读入每条记录,即读入每一行。

awk会把已读入的记录的数量记录在变量FNR中,有多个文件读入时,FNR在每次读入新文件时清零。

另一个变量NR则不清零,NR变量在awk执行时初始为0:

awk '{print FNR " " NR " " FILENAME}'  rf1  rf2

         

文件中记录的分隔是有预定义的变量RS的内容指定,缺省是\n。改变RS的值,就改变了记录的分隔。分隔符不出现在输出的内容中,除非特意指定输出它。

5.案例:

ref1的内容如下:

 

abcd@123.com

qwe.poe@qaz.cn

asdasd_qwq@190.org这是邮件的地址形式

 

使用下列命令:

awk  '{print}' rf1

awk '{RS="@"}{print}' rf1  

      

print命令是将读入的内容输出到屏幕。在第一条awk命令将ref1的内容原样显示在屏幕上。

第二条命令中,ref1的第一行原样显示,之后的行按新的方式显示。这是因为awk命令首先读入记录,然后按"模式"匹配,匹配结果为"真",记录保留,再实施之后的"动作"。

由于初次读入记录时,记录分隔符仍然是缺省值,即\n,所以第一行没有变化。但实施"动作"后,由于动作中有修改RS的命令,所以,读入第二条记录及以后的记录,就会按指定的分隔符操作。

 

验证上述结论可以采用将第一行置空行的方式就可以看到所有的内容都遵循了记录分隔符修改后的结果。

解决上述示例中修改记录分隔符对第一行不起作用的问题,可以采用在文件读入之前先行执行变量修改的方式,

即采用在命令行上改变变量的方式来修改记录分隔符:

awk '{print}' ref1  RS="@" ref2

这种方式的设置表示在处理ref2文件前,修改记录分隔符,结果ref2文件的记录分隔符改为“@”,ref1仍然是原来的缺省值,没有改变。

 

文件记录字段:

awk在读入记录时,会将每一条记录分成小段,称为字段。字段的分隔缺省是空白字符(空格、制表符)。

字段分割开后,awk用数字变量的方式来表示第几个字段,如1代表第一个字段;引用字段的内容,用变量加前缀$的方式表示,

$1表示第一个字段的内容,$127表示第127字段内容,不同于shell中的位置变量,数字不用用()括起来。$0表示整个记录的内容。

 

awk用预定义变量NF保存当前正在处理的记录总的字段数。awk每读一个新的纪录就会更新NF。记录中的最后一个字段可用$NF表示。

 

awk中,所有前缀是$的表达式都是表示字段值,如果表达式的结果不是数值,转成数值也要表示字段值。

             

awk中输入记录的字段的分隔符是由变量FS保存的内容指定,缺省是空白字符。输出字段的分隔符由OFS变量指定,输出的内容由输出命令及其格式产生,前述内容中的print命令就是输出命令,

这些命令包括诸如:print printf echo等命令。还包括条件判断等关键字。

            

修改字段分隔符可以采用上述修改记录分隔符的方式,也可以使用awk的选项-F指定输入

6.分隔符

 

ENVIRON            支持队列中系统环境变量的使用

FILENAME           awk浏览的文件名

FNR                浏览文件的记录数

FS                 设置输入域分隔符,等价于命令行 -F选项

NF                 浏览记录的域的个数

NR                 已读的记录数

OFS                输出域分隔符

ORS                输出记录分隔符

RS                 控制记录分隔符

 

$0变量是指整条记录。$1表示当前行的第一个域,$2表示当前行的第二个域,......以此类推。

1

$NF是number finally,表示最后一列的信息,跟变量NF是有区别的,变量NF统计的是每行列的总数

 

 

 

/  /  表示正则表达式

 

 

 

vi交互式处理   s 替换

sed非交互式文件内容编辑器

7.awk案例

        

awk '{FS="@";print $0,$2}' ref1

awk '{print $0,"--",$1}' FS="@" ref1       

awk -F":" '{print $0,"---",$2}' ref1

   

awk  -F " "  '{print $2,$3}'  f2   ---截取显示第二列,-F 指定分隔符   $后跟要显示的列号

awk  -F " "  '($2>300) {print $2,$3}'  f2   --- ()中增加筛选条件

awk  -F " "  '(NR==3)'  f1   --- NR表示行号

awk  -F " "  '(NR>=3 && NR<=5) {print $2}'  f2

awk  -F " "  '(NR==3 || NR==5)'  f1

awk   '/name/ {print $2,$3}' f2    ---/字符/ 表示筛选指定字符的行

awk  '$4  ~  /name/'  f1   ---筛选第四列中包含指定字符的行

awk  '$4  !~  /name/'  f1   ---筛选第四列中不包含指定字符的行

 

awk  -F ":"  '($3>=1000) {print  $1,$3,$6,$7} '  /etc/passwd    ---显示所有的自定义用户

 

 

8.sed:

数据流编辑命令

sed全称stream Editor流编辑器。实现对输入数据流(文本文件输入或管道输入)内容的基本文本内容转换,便于使用shell程序实现自动维护,自动实施以及批量处理等任务。

sed的工作方式是只对输入进行一次转换。输入内容不受影响,输出内容转换为指定的内容。

     

sed命令格式:

 

sed [选项] {执行脚本}  [输入文件名]

ed命令中的输入文件名可以缺失,如没有输入文件名,或输入文件名是"-",sed从键盘(标准输入)读入内容。

sed输出内容到屏幕(标准输出),使用输出重定向可以输出到文件。以下命令是相同的:

 

sed  's/hello/welcome/'  input.txt  >  output.txt

sed  's/hello/welcome/'  < input.txt  >  output.txt

cat input.txt | sed 's/hello/welcome/’ -  >  output.txt

 

s替换inout.txt中hellow为welcome      并保存在output.txt

sed  's/hello/welcome/g'  input.txt  >  output.txt    -g是将文件所有hello改为welcome

 

sed的脚本格式如下:

地址/模式/动作X

模式是匹配模式。

动作是执行的命令,一般只用单字符表示。若模式缺失,动作在所有行上实施。

sed的命令如下:

p  显示匹配的内容

d  删除匹配的内容

i   指定行之前插入内容

a  指定行之后插入内容

s/word1/word2/[g]  替换内容

 

sed动作中可以前缀地址,表示针对指定的地址执行动作:

sed  1,3d input.txt        --删除第一行到第三行

 

但地址指定时,要小地址在前,大地址在后。大地址在前时,只能针对大地址操作,不能表示范围

sed  4,2d  input.txt       --只删除第四行

 

指定地址时,有几种表示方式

2,+3      从第二行开始,再增加3行

sed -n 2,+3p     input.txt

 

2,3!      除第二行到第三行的其它行

sed -n  2,+3\!p   input.txt

 

2~3          从第二行开始,跳过3行

sed   -n    1~2p  input.txt

sed命令缺省会显示所有的行,如若不想显示所有的行,使用-n选项。

 

对于多次的"模式""动作"对,使用-e选项。

sed -e /模式1/动作1/  -e /模式2/动作2/ ......  文件名

sed   -e  1,3p  -e 2,4d  input.txt        ----1,3显示,2,4删除

 

sed字符处理

---不显示第3-5行

sed  '3,$d'  f1   ---不显示第3行到结尾

sed  '/name/d'  f1   ---不显示包含指定字符的行

sed  's/name/hello/p'  f1   ---字符替换

sed  's/name/&abc/g' f1     ---查到到指定字符后,在字符后追加内容

sed  -n '/name/p' f1    ---筛选显示包含指定字符的行

 

 

 

tar  -c  产生包文件  -f  abc.tar

 

 

一、打包命令

tar  -cvf  back.tar  f1 f2 f3  ---多文件打包,-c 创建包文件  -v查错  -f 文件名显示进度

tar  -tf  back.tar   ---查看包文件的内容

tar  -xvf  back.tar   ---在当前目录下解包,注:若目录下已有同名文件,则直接覆盖

tar  -xvf  back.tar   -C  /mnt/dd   ---  -C 指定解包路径,即解包到指定目录下

 

tar  -uf  back.tar  f4   ---追加文件

tar  -f  back.tar  --delete  f1    ---删除包中的指定文件

tar-f  backup.tar  --get   test2.txttestc.txt   ---提取文件

tar  -Af  back1.tar  back2.tar    ---把第二个包中的文件,追加到第一个包中,即合并

tar  -cvf  back.tar  f1  f2  f3   --remove-files   ---打包后删除源文件

 

注:文件后缀,仅起到文件类型的标识、识别功能,不能决定文件内部的存储格式

建议创建文件时,增加文件后缀,为了便于长期的文件识别、管理

9.压缩,解压命令 gzip bzip tar

gzip  back.tar   ---压缩后增加后缀 .gz

gunzip  back.tar.gz   ---解压缩

 

bzip  back.tar    ---bzip压缩,后缀为.bz

bunzip  back.tar.bz   ---解压缩

 

compress   f1   ---压缩,压缩后后缀为.z

uncompress   f1.z     ---解压缩

注:部分centos版本系统安装后默认不支持bzip、compress功能,若要使用,需要手动安装

 

tar  -zcvf  back.tgz  f1 f2 f3   ---打包压缩一步完成,  .tgz=.tar.gz

tar  -zxvf  back.tar.gz    ---解压解包,可加 -C 指定解包路径

 

12系统、核心数据备份

1、制作备份光盘镜像

genisoimage  -J  -L  -r   -o  /mnt/etc.iso   /etc   ---给/etc/制作镜像文件

-J 备份符合Joliet命名规范的文件或目录   -L 备份隐藏文件    -r 允许读取目录下所有文件    -o  指定生成的镜像文件名

 

mount  /mnt/etc.iso   /mnt/d1   ---把镜像当做光盘直接挂载使用

注:老版linux,mount  /mnt/etc.iso  /mnt/d1  -o  loop  --- -o loop 表示伪设备挂载

 

wodim --devices   ---查看本机的刻录设备,如:查到设备名为 /dev/dvdrw

wodim  -v  dev=/dev/dvdrw  blank=fast   ---清空光盘上原数据

wodim  -v  dev=/dev/dvdrw  /mnt/etc.iso   ---刻录镜像文件入光盘

2、dd数据导入导出

dd  if=源设备、文件   of=目标设备、文件  bs=每次大小   count=导入次数

dd  if=f1  of=f2   ---文件复制

dd  if=f1  of=f2  bs=3  count=2   ---导入数据两次,每次3B

dd  if=/dev/sda2  of=/mnt/f1  bs=4096  count=50   ---备份某分区的前50个block

dd  if=/dev/sda2  of=/dev/sdb3      ---分区数据拷贝

dd  if=/dev/sda   of=/dev/sdb     ---磁盘数据对拷,相当于制作母盘

dd  if=/dev/zero  of=/mnt/f1    bs=100M  count=5   ---创建500M大小的文件

--- /dev/zero 伪设备,功能:无限生成二进制的0

dd  if=/dev/zero  of=/dev/sda3   bs=100M  count=3   --- 擦除分区

3、Linux系统备份方案

使用dd 制作母盘,备份整个Linux磁盘

使用ghost工具,给系统磁盘,如sda做磁盘镜像  .gho

核心系统文件,使用genisoimage做镜像

应用软件、服务的数据,一般使用专用软件做数据备份

 

4、数据备份基本概念

备份分类

完全备份   ---备份所有数据

差异备份   ---备份和上一次完全备之间的变化数据

增量备份   ---备份和上一次备份操作之间的变化数据

累积增量备份   ---备份多次备份操作的变化总和

 

备份级别

0-9级,共10级

0级   ---完全备

1级   ---备份和0级之间的变化

2-9   ---备和上一级,或者最近一次数字小的级别之间的变化数据

 

 

备份策略

周日晚  0级备   完全备

周一晚  2级备   差异备

周二晚  2级备   差异备

周三晚  1级备   差异备

周四晚  2级备   增量备

周五晚  2级备   累积增量备

周六晚  2级备   累积增量备

 

5、数据备份实验 创建分区

dump数据备份,特点:仅可以给某分区做备份,不支持文件夹、文件的备份

配置思路:新建一个分区,制作文件系统,但不挂载使用,专用于数据备份,

备份时,指定的源分区是指定的其挂载点

 

yum  -y  install  dump   ---安装dump软件包

 

fdisk /dev/sda6  ---创建新分区  /dev/sda6  800M

partprobe

mkfs  -t  ext4  /dev/sda6   ---制作文件系统,注:不挂载使用

 

cd /home

touch f1 f2 f3

mkdir  dd

touch  dd/f4  dd/f5

 

dump  -0  -u  -f  /dev/sda6  /home   ---备份分区,注:一定指定的是分区的挂载点-0 指定备份级别

-u 记录备份日志,日志文件 /etc/dumpdates -f 指定用于备份的分区设备 后面指定文件系统挂载点,如:/home

dump  -W   ---查看备份日志

 

restore  -tf  /dev/sda6   ---查看备份设备中的文件

restore  -rf  /dev/sda6   ---把备份设备中的所有文件恢复到当前目录下

restore  -xf  /dev/sda6  f2  dd/f4  ---恢复指定文件,按提示:点 1  点 y 即可

 

linux的文件处理(匹配 正则表达式 egrep awk sed)和系统、核心数据备份的更多相关文章

  1. Linux的文本处理工具浅谈-awk sed grep

    Linux的文本处理工具浅谈 awk   老大 [功能说明] 用于文本处理的语言(取行,过滤),支持正则 NR代表行数,$n取某一列,$NF最后一列 NR==20,NR==30 从20行到30行 FS ...

  2. (五)Linux之文件与目录管理以及文本处理

    Linux之文件与目录管理 目录 Linux之文件与目录管理 前言 绝对路径与相对路径说明: 一.目录常用命令 常用处理目录的命令: 切换目录 cd 显示当前路径 pwd 查看目录下文件 ls 创建目 ...

  3. [转]shell awk sed tr grep 语法汇总

    tr 基本语法 -c          # 用字符串1中字符集的补集替换此字符集,要求字符集为ASCII  -d          # 删除字符串1中所有输入字符  -s          # 删除所 ...

  4. shell下的 awk/sed/grep/seq/tr

    转自:实例手册 https://github.com/liquanzhou/ops_doc/blob/master/shell%E5%AE%9E%E4%BE%8B%E6%89%8B%E5%86%8C. ...

  5. Linux追加文件内容并在内容前加上该文件名(awk, FILENAME功能妙用)

    假如有三个文件file1.txt,file2.txt,file3.txt 每一个文件内容如下: 现在打算提取每一个文件字符为16的行,打印该行所有的内容.以及该文件名,并追加到file4.txt,则可 ...

  6. linux shell grep/awk/sed 匹配tab

    处理文件的命令实在是多, sed, awk, grep等.遇到了需要匹配tab的情况, 记录一下. 例子如下:找出文本中第一列是1的行. 文本a 解法1 : 直接使用正则表达式, ^表示开头, \t表 ...

  7. Linux统计文件/目录数量ls -l | grep "^-" | wc -l匹配开头和结尾

    Linux统计文件数量 ls -l | grep "^-" | wc -l “^-”  一般文件 “^d” 目录文件 shell/vim中^表示开头 cat repatterns ...

  8. awk双文件互相匹配查找

    awk双文件互相匹配查找 要求: 文件a:  10/05766798607,11/20050325191329,29/0.1,14/05766798607  10/05767158557,11/200 ...

  9. LINUX中,find结合grep正则表达式,快速查找代码文件。

    ###目的###LINUX中,find结合grep正则表达式快速查找代码. 例如经常有需求:查找当前目录下所有.h文件中,"public开头,中间任意字符,以VideoFrameReceiv ...

随机推荐

  1. Emergency Evacuation,题解

    题目: 题意: 在某一秒,每个人可以进行一个移动:去旁边座位,去过道,在过道向出口走,求最少多少秒可以让所有人离开(具体如图和样例). 分析: 首先,我们先考虑简单的,只考虑出口前有什么事件发生:1. ...

  2. Python-读取文件的大小

    1.python读取文件以及文件夹的大小 1. os.path.getsize(file_path):file_path为文件路径 import os os.path.getsize('d:/svn/ ...

  3. asp.net mvc企业实战技能汇总

  4. mongodb(四):对文档操作增删查改(python)

    连接mongodb #!/usr/bin/env python # -*- coding:utf-8 -*- import pymongo mongo_client = pymongo.MongoCl ...

  5. Java并发编程实践

    最近阅读了<Java并发编程实践>这本书,总结了一下几个相关的知识点. 线程安全 当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在主调代码中不需要任 ...

  6. Presto原理及安装

    背景 MapReduce不能满足大数据快速实时adhoc查询计算的性能要求,Facebook2012年开发,2013年开源 是什么 基于内存的并行计算,Facebook推出的分布式SQL交互式查询引擎 ...

  7. js 左右切换 局部刷新

    //刷新地方的ID,后面ID前必须加空格 $("#gwc").load(location.href + " #gwc");

  8. Ethical Hacking - Web Penetration Testing(2)

    INFORMATION GATHERING IP address. Domain name Info. Technologies used. Other websites on the same se ...

  9. collection集合常用功能

    java.util.Collection接口 是所有单列集合最顶层的接口,里面定义了所有单列集合的共性方法 1.public boolean add(E e)     添加元素 2.public bo ...

  10. Java继承多态

    一. 父类引用指向子类对象父类名(接口名) 对象名=new 子类(接口)名称() 二. 父子继承关系中,成员变量重名1.直接通过子类对象访问成员变量 =左边是谁,就优先用谁2.间接通过成员方法访问成员 ...