【【【find 介 绍】】】
find pathname -options [-print -exec -ok ...]
-print: find命令将匹配的文件输出到标准输出。
当前目录下查找文件权限位为 7 5 5的文件
$ find . -perm 755 -print
当前目录及子目录中查找文件名以一个大写字母开头的文件
$ find . -name "[A-Z]*"
希望在系统根目录下查找更改时间在 5日以内的文件
$ find / -mtime -5 -print
为了在/var/adm目录下查找更改时间在 3日以前的文件
$ find /var/adm -mtime +3 -print
查找除目录以外的所有类型的文件,可以用:
$ find . ! -type d
【b-块设备文件;d-目录;c-字符设备文件;p-管道文件;l-符号链接文件;f-普通文件】
当前目录下查找文件长度大于 4K 字节的文件,可以用:
$ find . -size +4000c
find命令从文件系统的根目录开始,查找一个名为 CON.FILE的文件。
它将首先匹配所有的文件然后再进入子目录中查找
$ find / -name "CON.FILE" -depth
当匹配到一些文件以后,可能希望对其进行某些操作:
查找更改时间在 5日以前的文件并删除它们
find / -type f -mtime +5 -exec rm {} \;
exec选项后面跟随着所要执行的命令,然后是一对儿 { },一个空格和一个 \,最后是一个分号
为了查找系统中所有文件长度为 0的普通文件,并列出它们的完整路径,可以用:
$ find / -type f -size 0 -exec ls -l {} \;
日志文件名的最后含有数字,这样我们一眼就可以看出哪个文件是最新的,哪个是最旧的。
Admin.log 文件编上了序号:admin.log.001.admin.log.002等等。
下面的find命令将删除 /logs目录中访问时间在 7日以前、
含有数字后缀的 admin.log文件。该命令只检查三位数字,所以相应日志文件的后缀不要超过999。
$ find /logs -name 'admin.log[0-9][0-9][0-9] e +7 -exec rm {} \;
查找当前文件系统中的所有目录并排序,可以用:
$ find . -type d -print -mount |sort
为了查找系统中所有的 rmt磁带设备,可以用:
$ find /dev/rmt
【【【pg 介 绍】】】--page
pg [option] filename
分页显示指定文件的内容。在显示一页文件时,最后一行将显示等待用户输入指令
[option]:可输入的指令有如下选项。
h this screen
q or Q quit program
<newline> next page
f skip a page forward
d or ^D next halfpage
l next line
$ last page
/regex/ search forward for regex
?regex? or ^regex^ search backward for regex
. or ^L redraw screen
w or z set page size and go to next page
s filename save current file to filename
!command shell escape
p go to previous file
n go to next file
注释:当pg命令显示到文件的末尾时,显示一个文件结束信息EOF(end of file)。
例如:% pg filename
【【【grep 介 绍】】】
grep [keyword] [options] filename
[options]主要参数:
-c:只输出匹配行的计数。
-i:不区分大 小写(只适用于单字符)。
-h:查询多文件时不显示文件名。
-l:查询多文件时只输出包含匹配字符的文件名。
-n:显示匹配行及行号。
-s:不显示不存在或无匹配文本的错误信息。屏蔽错误!
-v:显示不包含匹配文本的所有行。排除!
pattern正则表达式主要参数:
\: 忽略正则表达式中特殊字符的原有含义。
^:匹配正则表达式的开始行。
$: 匹配正则表达式的结束行。
\<:从匹配正则表达 式的行开始。
\>:到匹配正则表达式的行结束。
[ ]:单个字符,如[A]即A符合要求 。
[ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。
. :所有的单个字符。
* :有字符,长度可以为0。
【grep】和【sed】命令中,同时结合 {\\}(以字符出现情况进行匹配的元字符)使用在 【awk】语言中。
^ 只匹配行首---$ ls -l |grep ^-
$ 只匹配行尾---$ ls -l |grep k$
* 只一个单字符后紧跟 *,匹配0个或多个此单字符
[] 只匹配 [ ]内字符。可以是一个单字符,也可以是字符序列。可以使用
表示[]内字符序列范围,如用 [1-5]代替[12345]
\ 只用来屏蔽一个元字符的特殊含义。因为有时在 s h e l l中一些元字符有
特殊含义。 \可以使其失去应有意义
. 只匹配任意单字符: 【5,6字符为XC: ....XC....】
pattern\{n\} 只用来匹配前面 pattern出现次数。 n为次数
pattern\{n,\}m 只含义同上,但次数最少为 n
pattern\{n,m\} 只含义同上,但 pattern出现次数在 n与m之间
类 等价的正则表达式 类 等价的正则表达式
[[:upper:]] [A-Z] [[:alnum:]] [0-9a-zA-Z]
[[:lower:]] [a-z] [[:space:]] 空格或tab键
[[:digit:]] [0-9] [[:alpha:]] [a-zA-Z]
在一个目录中查询不包含目录的所有文件:$ ls -l |grep '^[^d]'
********************************************************************************
【【【sed 介 绍】】】Sed(Stream EDitor)为 UNIX 系统上提供将编辑工作自动化的编辑器
sed [-nefri] command 输入文本
1.使用sed命令行格式为:
sed [选项] sed命令 输入文件
2.使用sed脚本文件格式为:
sed [选项] -f sed脚本文件 输入文件
3.使用第一行具有 sed命令解释器的sed脚本文件,其格式为:
sed脚本文件 [选项] 输入文件
常用选项:
-n∶ 使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上。
但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
-e∶ 直接在指令列模式上进行sed的动作编辑;$ sed -e '1,5d' -e 's/test/check/' example
-f∶ 直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作;
-r∶ sed 的动作支援的是延伸型正规表示法的语法。(预设是基础正规表示法语法)
-i∶ 直接修改读取的档案内容,而不是由萤幕输出。
sed -e '编辑指令 1' -e '编辑指令 2' ... 文件档
替换标记:
g:表示行内全面替换。
p:表示打印行。
w:表示把行写入一个文件。w file
x:表示互换模板块中的文本和缓冲区中的文本。
y:表示把一个字符翻译为另外的字符(但是不用于正则表达式)
$ sed -e '/info/w tofile' fromfile
$ sed '1,3w wfile' rfile #写入文件wfile,屏幕显示rfile内容
常用命令:(command)
a--append ∶新增,a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c--change ∶改变,c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d--delete ∶删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
i--insert ∶插入,i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p--print ∶列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作~
s--substuite ∶替换,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g
$ sed '1,3a drink tea' file #第一行到第三行后增加字符串"drink tea"
$ sed '1,2c Hi' file #第一行到第二行代替为一行"Hi"
$ sed '2,$d' file #删除第二行到最后一行
$ sed -i '8,$i bye' file #在文件file中第八行到最后行每行间插入一行"bye"
$ sed -n '5,9p' file #在屏幕中显示出5到9行的内容(!没有<-n>时5~9行重复列出!)
$ sed -n '5,9!p' file #'!'取反
$ sed -e 's/test/& my car/' file #"test" 被替换成 "test my car"
$ sed -e 's/(test) (my) (car)/[2 3 1]/' file #
$ sed '/显示/s/info/信息/g' file1 file2 #文件中含“显示”的行中"info"替换为"信息"。
#若没有'g',则只有每行的第一个'info'被替换为"信息"。
(紧跟着s命令的都被认为是新的分隔符)
$ sed -e '/^$/d' file #删除全部空行
$ sed -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' file #小写字母改成大写
$ sed -n -e 'n' -e 'p' file #输出偶数行
$ sed -n -e 'N' -e 'P' file #输出奇数行
$ sed -e '/日期/q' -e '1,3d' file #遇到有‘日期’的行则不再处理显示文件以后的内容
$ sed -n '=' file #只打印出行号
$ sed -e '=' file #行号+行内容
--------------------------------------------------
file:
12321##FDGH##45.12^M
00325##GJSD##32.56^M
02556##GFGF##98.52^M
1) 用一个空格替换所有的( ##)符号;
2) 删除起始域中最前面的 0(00);
3) 删除行尾控制字符( ^M);
$ sed 's/##/ /g' file
$ sed 's/^0*//g' file
$ sed 's/\^M//g' file
$ sed -e 's/##/ /g' -e 's/^0*//g' -e 's/\^M//g' file
----------------------------------------------------
********************************************************************************
【【【awk 介 绍】】】
awk [-f separator] 'commands' input-file(s)
awk 'BEGIN{actions}{actions;actions……}……END{actions}' inputfile
**其中BEGIN{actions}和END{actions}是可选的!!BEGIN,END必须为大写!!!!
**如果不特别指明模式, awk总是匹配或打印行数
**实际动作在大括号 {}内指明
**如果不指明采取动作, awk将打印出所有浏览出来的记录
**浏览域标记为 $1,$2 . . . $n(用逗号分隔域),所有域为:$0
**打印一个域或所有域,使用 print命令
$ awk '{print $1,$2,$3}' script.txt #不保存文件,屏幕显示输出结果
$ awk '{print $1,$2,$3}' script.txt>outfile.txt #保存到文件,屏幕不显示输出结果
$ awk '{print $0}' script|tee outfile.txt #保存到文件,屏幕显示输出结果
$ awk 'BEGIN{print "aa\tbb\n----------------"} {print $1"\t"$2} END{print"end of report"}' script.txt
&& AND:语句两边必须同时匹配为真。
|| OR :语句两边同时或其中一边匹配为真。
! 非 :求逆
~ 匹配正则表达式
!~ 不匹配正则表达式
$ awk '$2~/政法/{print $0}' script.txt
$ awk '$2~/政法学院/' script.txt
$ awk '$2=="政法学院" {print $0}' script.txt
$ awk '{if($2~/政法学院/)print $0}' script.txt
【awk内置变量】
ARGC --命令行参数个数
ARGV --命令行参数排列
ENVIRON --支持队列中系统环境变量的使用
FILENAME--awk浏览的文件名
FNR --浏览文件的记录数
FS --设置输入域分隔符,等价于命令行 -F选项
NF --浏览记录的域个数
NR --已读的记录数
OFS --输出域分隔符
ORS --输出记录分隔符
RS --控制记录分隔符
【awk内置字符串函数】
gsub(r,s) 在整个$0中用s替代r----$ awk 'gsub(/1002/,1102){print $0}' file
gsub(r,s,t) 在整个t中用s替代r----$
index(s,t) 返回s中字符串t的第一位置----$ awk 'BEGIN {print index(hello,el)}' file
length(s) 返回s长度----$ awk '$1=="kk"{print length($1)" "$1}' file
match(s,r) 测试s是否包含匹配 r的字符串----$ awk 'BEGIN {print match("hello",/e/)}' file
split(s,a,fs) 在fs上将s分成序列a----$ awk 'BEGIN {print split("0461-3205-1656",array,"-")}' file
sprint(fmt,exp) 返回经fmt格式化后的 exp----$
sub(r,s) 用$0中最左边最长的子串代替 s----$ awk '$1=="kk" substr($1,1,5)' file
substr(s,p) 返回字符串 s中从p开始的后缀部分----$ awk 'BEGIN {print match("hello",/e/)}'
substr(s,p,n) 返回字符串 s中从p开始长度为 n的后缀部分----$
【awk中使用的屏蔽序列】
\b 退格键
\f 走纸换页
\n 新行
\r 回车键
\t tab键
\ddd 八进制值
\c 任意其他特殊字符,例如 \\为反斜线符号
【awk printf修饰符】
- 左对齐
Width 域的步长,用 0表示0步长
.prec 最大字符串长度,或小数点右边的位数
【awk printf格式】
%c ASCII字符---$ echo "65" |awk '{print "%c",$0}'
%d 整数---
%e 浮点数,科学记数法---
%f 浮点数,例如( 123.44)---
%g awk决定使用哪种浮点数转换 e或者f---
%o 八进制数---
%s 字符---
%x 十六进制数串---
分享到:
相关推荐
vi_vim_awk_sed_grep_find_超级达人学习包,包括一些vi的命令,图表等
sed awk grep命令使用 sed awk grep命令使用 sed awk grep命令使用
sed awk grep sed awk grepsed awk grep sed awk grep sed awk grep sed awk grep sed awk grep sed awk grep sed awk grep
linux grep sed awk命令的综合运用以及详解
linux的强大的文本处理工具grep,sed,awk(文本处理三剑客)
Linux三剑客awk sed grep全攻略
windows下的grep、sed、awk
Because there is a natural progression in learning from grep to sed to awk, we will be covering all three programs, although the focus is on sed and awk. Sed and awk are tools used by users, ...
grep,sed,awk命令实例大练习,好东西大家分享
grep、sed、awk、perl等对正则表达式的支持的差别,大牛总结的,适合高手参考用。
主要减少linux系统中的查询三剑客grep,awk,sed的使用方法和详解,适合linux初学进行学习,适合在日常对于文本内容或者命令执行结果的搜索,可以完善和简便自己的工作内容和完善对于shell脚本的使用。
常用linux命令在windows环境下使用 windows grep awk sed cat
shell编程,sed,awk,grep等教程
在处理庞大数据量时,善用Linux三剑客sed grep awk能省下不少劲。文档例子仅供参考学习!
Grep (global search regular [removed]RE) and print out the line,全面搜索正则表达式并 把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印 出来。Grep家族包括Grep、 eGrep...
最头疼的是,这些重复部分的语法还各不相同,(比如 grep awk sed 都有正则表达式匹配的功能,但是三者的正则表达式语法就不相同) 最最最头疼的是,每个工具还分 GNU 版和不是 GNU 版,之间的差别也很大, 最最最最...
总结awk、sed、grep的用法。
本书在一开始就给出了一个概述和指南,论述了从grep到sed再到awk不断改进的功能。sed和awk具有相同的命令行语法,以脚本的形式接收用户的命令。因为所有这三个程序都使用UNIX正则表达式,因此书中用一章的篇幅来介绍...
打包了Linux下的命令文件,在windows下的用法为:把这四个文件丢一文件夹,然后配置环境变量,这样就可以在dos 命令下使用这几个命令行了。
关于unix/linus下面的常用命令awk和sed的思维导图,通过图片全面了解了命令所需参数和命令格式,以及相应的命令中自带的函数等等。