linux下查⽂件及⽂件内查内容--findgrepsedawk
1.find 查到想要的⽂件或⽬录
格式:find [path] [-OPTION] [-exec |grep |xargs -ok -print | ……] [command {} \;]
参数:
-type 以类型查
f ⽂件
d ⽬录
-name 以⽂件名查
-size 根据问价⼤⼩来查。eg: find /data -size 5M
-perm 根据⽂件权限查。 eg: find /data -perm 755
-maxdepth n 显⽰的最⼤层数。(这个参数通常放在第⼀个,否则的话会有警告信息)。 eg: find /data/ -maxdepth 2 -type d
-exec command {} \; 对匹配的⽂件执⾏该参数给出的命令。形式为 command {} \;
-ok 与-exec作⽤相同。区别在于,执⾏命令之前,都会给出提⽰,让⽤户确认是否执⾏。
-mtime -n/+n 根据修改时间出对应的⽂件。-n指n天以内;+n指n天以前。天数前⾯必须要有加号或减号,否则不会有查结果。
eg:find -type f -name "*.log" -mtime +7|xargs ls -l 或 ls -l $(find -type f -name "*.log" -mtime 7) 或 find -type f -name "*.log" -mtime 7 -exec ls -l {} \;
! 取反。注意:符号前后⾄少⼀个空格。 eg: find /data -maxdepth 2 -type d ! -name "."
find不加任何参数-----显⽰当前⽬录下的所有⽂件(包括⼦⽬录及⼦⽬录内的⽂件)
格式:grep 参数查⽤的关键字符⽂件名
参数:
-v 排除。 eg:grep -v "num" 将⽂件内,⾮包含num字符的⾏显⽰出来
-An 将匹配到的字符所在⾏显⽰出来,并显⽰次⾏下⾯的n⾏。 eg:grep A15 “num” 将⽂本内,匹配到num字符的⾏显⽰,并显⽰此⾏下⾯15⾏
-n 显⽰匹配到的字符所在的⾏内容,及其⾏号。
-o 显⽰grep的执⾏过程,即每次匹配到的内容。涉及到正则的话,就是正则每次匹配到的内容。
egrep ⽀持⾼级正则。相当于grep -E
3.sed 取⾏。多⽤于替换。默认会显⽰⽂件的全部内容。也可⽤于查内容(这个⽤的⽐较少)
格式:sed 参数匹配⾏/替换/查的字符⽂件名
参数:
-n 取消默认输出。即取消默认显⽰全部内容,⼀般与p搭配使⽤。
-r 表⽰⽀持扩展正则。
-i 修改⽂件内容
eg:
取⾏:sed -n '20,30p' 显⽰⽂件第20⾏到第30⾏的内容。
sed -n '20p' 显⽰⽂件第20⾏的内容。
sed -n '3,$p' 显⽰第3⾏到最后⼀⾏。
注意:显⽰前多少⾏或后多少⾏,可以⽤head或tail命令。搭配sed显⽰具体的某⾏或区间⾏。关于⾏的显⽰查看就能完全搞定。
替换:sed -i 's#谁#替换为什么#g' eg: sed -i 's#nm#DDD#g' 将⽂件内的nm全部替换为DDD
注:替换时sg中间的三个符号,什么都可以,但是⼀般常⽤@或#,即s@@@g或s###g
搭配find可替换多个⽂件内容:
find /data/ -type f -name "*.sh" |xargs sed -i 's#abc#kpl#g' 出/data⽂件夹内所有以.sh结尾的⽂件,替换所有⽂件内的abc 为kpl.
sed -n '2s#abc#123#gp' 将第2⾏的abc替换为123,显⽰出来。这⾥若是加-i的话,则会⽤处理的结果⾏替换整个⽂件的内容,如:sed -n '2s#abc#123#gp' -i ,则会把第2⾏中的abc全部替换为123后,清空⽂件,写⼊第2⾏内容,见下图:
‘=’表⽰给每⾏加⾏号
替换具体某⼀⾏内容时,不能加p参数,只要-i即可,否则会出错,会多出⼀⾏来。这⾥还需要再研究研究:
sed -i ‘2s#abc#123#g’ 这样没有参数p,会正常的将第2⾏abc替换为123.
sed -i '2s#abc#123#gp' 这样的有参数p,会在替换后多出⼀⾏来,内容和第2⾏⼀致.见图:
查:sed -n '/abc/p' 将⽂件内包含abc的⾏显⽰.
sed '/abc/d' 将⽂件内没有包含abc字符的⾏,均显⽰出来(这⾥如果加-n的话就什么都不显⽰)。-----⼀般根据字符查⾏⽤grep,sed这样⽤起来不⽅便,也⽤的少.
4.awk 取列。取⾏。计算。
格式:awk 参数取⾏/取列/查的字符⽂件名
awk ‘谁{做什么}’ ⽂件 eg:awk ‘NR==2{print $3}’ 取出⽂件第2⾏的第3列内容
参数:
-F 指定分隔符(未指定时,默认空格作为分隔符)。 eg:awk -F ”,“ ‘{print $3}’ ⽤逗号作为分隔符,显⽰第3列
-F "[ ,]" 指定多个分隔符。 eg:awk -F "[ ,]" '{print $3,$5}' ⽤逗号或者空格作为分隔符,显⽰第3列和第5列
linux查看当前文件夹内容 -F "[ ,]+" 指定多个分隔符。这⾥的+号表⽰,以连续出现的空格或逗号作为分隔符。
$n 第n列
$0 表⽰⼀整⾏的内容
NR 表⽰⾏号
{print }
取列:
awk ‘{print $3]’ 显⽰第3列
awk '{print $2,$6}' 显⽰第2列,第6列
awk '{print $2" ,aa"$4}' 显⽰第2列,第4列。⼤括号内,双引号⾥的内容会原封不动的输出。
取⾏:
awk ‘NR==20,NR==30’ 显⽰第20⾏到第30⾏
awk ‘NR==20’ 显⽰第20⾏
查:
awk '/123/' 显⽰⽂件内包含123字符的⾏
awk ‘!/123/’ 显⽰⽂件内不包含123字符的⾏
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论