linux的文件处理(匹配 正则表达式 egrep awk sed)和系统、核心数据备份
文件处理
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)和系统、核心数据备份的更多相关文章
- Linux的文本处理工具浅谈-awk sed grep
Linux的文本处理工具浅谈 awk 老大 [功能说明] 用于文本处理的语言(取行,过滤),支持正则 NR代表行数,$n取某一列,$NF最后一列 NR==20,NR==30 从20行到30行 FS ...
- (五)Linux之文件与目录管理以及文本处理
Linux之文件与目录管理 目录 Linux之文件与目录管理 前言 绝对路径与相对路径说明: 一.目录常用命令 常用处理目录的命令: 切换目录 cd 显示当前路径 pwd 查看目录下文件 ls 创建目 ...
- [转]shell awk sed tr grep 语法汇总
tr 基本语法 -c # 用字符串1中字符集的补集替换此字符集,要求字符集为ASCII -d # 删除字符串1中所有输入字符 -s # 删除所 ...
- 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. ...
- Linux追加文件内容并在内容前加上该文件名(awk, FILENAME功能妙用)
假如有三个文件file1.txt,file2.txt,file3.txt 每一个文件内容如下: 现在打算提取每一个文件字符为16的行,打印该行所有的内容.以及该文件名,并追加到file4.txt,则可 ...
- linux shell grep/awk/sed 匹配tab
处理文件的命令实在是多, sed, awk, grep等.遇到了需要匹配tab的情况, 记录一下. 例子如下:找出文本中第一列是1的行. 文本a 解法1 : 直接使用正则表达式, ^表示开头, \t表 ...
- Linux统计文件/目录数量ls -l | grep "^-" | wc -l匹配开头和结尾
Linux统计文件数量 ls -l | grep "^-" | wc -l “^-” 一般文件 “^d” 目录文件 shell/vim中^表示开头 cat repatterns ...
- awk双文件互相匹配查找
awk双文件互相匹配查找 要求: 文件a: 10/05766798607,11/20050325191329,29/0.1,14/05766798607 10/05767158557,11/200 ...
- LINUX中,find结合grep正则表达式,快速查找代码文件。
###目的###LINUX中,find结合grep正则表达式快速查找代码. 例如经常有需求:查找当前目录下所有.h文件中,"public开头,中间任意字符,以VideoFrameReceiv ...
随机推荐
- Spreading the Wealth,思维
题目去洛谷 题意: 很清晰,n个人,每人有一些硬币硬币总数sum≡0(mod n),通过一些互相交换,使硬币数平均(即每人有相同个数的硬币) 分析: 还是有点思维含量的,我们这样想,我们其实就是要确定 ...
- centos彻底删除文件夹创建文件
centos彻底删除文件夹.文件命令(centos 新建.删除.移动.复制等命令: 1.新建文件夹 mkdir 文件名 新建一个名为test的文件夹在home下 view source1 mkdir ...
- 【Linux】CentOS7 常用命令集合
CentOS7 常用命令集合 常用命令 文件与目录 操作命令解析 cd /home 进入 ‘/home’ 目录cd .. 返回上一级目录cd ../.. 返回上两级目录cd - 返回上次所在目录cp ...
- testNG jar包启动找不到org.testng.TestNG
主要是因为打包时依赖的jar包没有打入,网上有很多需要将对应的jar单独拷贝出来然后通过classpath引用启动,但是感觉这个就是个无底洞.拷贝了这么多个包最后还是说找不到ObjectId 启动命令 ...
- JavaScript学习 Ⅲ
六. 面向对象 对象属于一种复合的数据类型,在对象中可以保存多个不同的数据类型的属性. 对象分类 内建对象 由ES标准种定义的对象.比如:Math String Number 宿主对象 由JS的运行环 ...
- Python函数06/装饰器
Python函数06/装饰器 目录 Python函数06/装饰器 内容大纲 1.装饰器 1.1 开放封闭原则 1.2 装饰器 2.今日练习 内容大纲 1.装饰器 1.装饰器 1.1 开放封闭原则 扩展 ...
- HotSpot VM运行时
HotSpot VM运行时系统为HotSpot JIT编译器和垃圾收集器提供服务和通用API,同时还为VM提供启动.线程管理.JNI(Java本地接口)等基本功能.HotSpot VM运行时环境担当许 ...
- 接口测试框架实战(三)| JSON 请求与响应断言
关注公众号,获取测试开发实战干货合辑.本文节选自霍格沃兹<测试开发实战进阶>课程教学内容. 数据驱动就是通过数据的改变驱动自动化测试的执行,最终引起测试结果的改变.简单来说,就是参数化在自 ...
- 史上最强vue总结~万字长文---面试开发全靠它了
vue框架篇 vue的优点 轻量级框架:只关注视图层,是一个构建数据的视图集合,大小只有几十kb: 简单易学:国人开发,中文文档,不存在语言障碍 ,易于理解和学习: 双向数据绑定:保留了angular ...
- Python 爬取异步加载的数据
在我们的工作中,可能会遇到这样的情况:我们需要爬取的数据是通过ajax异步加载的,这样的话通过requests得到的只是一个静态页面,而我们需要的是ajax动态加载的数据! 那我们应该怎么办呢??? ...