【【【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、sed 和 grep 中。例如,% vi textfile ----------------------- Unix Shell 实例精解学习笔记,涵盖了 Unix Shell 的基础知识、正则...
在UNIX操作系统中,掌握基本的命令是至关重要的,因为这些命令构成了用户与系统...随着经验的积累,用户还会接触到更多高级的命令和工具,如文件搜索(`find`)、文本处理(`grep`、`sed`、`awk`)等,以提升工作效率。
`pg`与`more`类似但提供更多功能;`head`显示文件的前几行;`tail`显示文件的后几行。 ### UNIX工具 HP-UX 11i集成了一系列强大的UNIX工具,如`split`用于将一个大文件分割成较小的文件;`wc`统计文件中的字节数、...
* pg:分页格式化显示文件内容 * more:分屏显示文件内容 * od:显示非文本文件的内容 * cp:复制文件或目录 * rm:删除文件或目录 * mv:改变文件名或所在目录 * ln:联接文件 * find:使用匹配表达式查找文件 * ...
- **移植性问题**:不同 Unix 版本和不同的工具(如 `grep`、`sed` 等)可能支持不同的正则表达式语法。因此,在使用正则表达式时,需确保其与目标系统兼容。 通过上述知识点的学习,读者可以更好地理解 Unix Shell...
- **使用举例**: `find . -name "*.c" -print` 该命令将在当前目录及其子目录下查找所有 `.c` 后缀的文件。 **2.10 file - 显示文件类型** - **功能描述**: `file` 命令用于显示文件的类型。 - **使用举例**: `file...
- `pg`:分页显示文本文件内容(类似于`more`)。 - `find`:查找文件。 - `cc`:C语言编译器。 - `cp`:复制文件或目录。 - `dd`:数据转换和复制。 - `grep`:搜索文本中的模式。 - `ps`:显示进程信息。 ...
- `awk`: 对文本数据进行强大的处理和分析。 - `pwd`: 显示当前工作目录。 - `vi`: 编辑文本文件。 - `finger`: 显示用户信息。 - `w`: 显示谁登录了系统以及他们正在做什么。 - `pg`: 分页查看文件。 - `find`: 在...
3. 文本处理:`grep`用于搜索文本模式,`sed`进行流编辑,`awk`处理结构化文本数据,`cat`、`less`、`more`查看和浏览文件内容。 4. 网络工具:`curl`用于传输数据,`wget`下载文件,`ping`测试网络连通性,`...
- **awk**:强大的文本处理工具,可以进行复杂的文本分析和格式化输出。 - **pw**:显示用户的密码数据库条目。 - **db**:调试程序。 - **vi**:强大的文本编辑器。 - **finger**:显示用户信息。 - **w**:显示谁...
- `awk`: 强大的文本处理工具,适用于数据提取和报告。 - `pwd`: 显示当前工作目录。 - `db`: 数据库管理工具。 - `vi`: 文本编辑器。 - `finger`: 获取用户信息。 - `w`: 显示谁登录了系统以及他们正在做什么。 - `...
- **命令格式**:`find . -name "*.c" -print` - **功能说明**:在当前目录及其子目录中查找所有的`.c`文件,并打印出它们的路径。 **file:确定文件类型** - **命令格式**:`file filename` - **功能说明**:确定...
Shell 命令**:如 `who`、`mv`、`rm`、`wc`、`ls`、`cat`、`date`、`at`、`lp`、`rsh`、`more`、`awk`、`pwd`、`bc`、`vi`、`finger`、`w`、`pg`、`find`、`cc`、`cp`、`dd`、`grep`、`ksh`、`sh`、`ps`、`sed` 等。...
- **命令格式**:`find . -name "*.c" -print` - **功能**:在当前目录及其子目录下查找所有扩展名为.c的文件,并打印出文件路径。 **file:显示文件类型** - **命令格式**:`file filename` - **功能**:显示文件...
- **awk**:强大的文本处理工具,常用于报告生成和数据提取。 - **grep**:搜索文件中包含特定模式的行。 - **find**:搜索文件系统中满足某些条件的文件。 ##### 2.3 系统管理 - **cron**:用于计划周期性任务的...