`
dahui12344321
  • 浏览: 248439 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

linux 命令小记

阅读更多
grep

1. grep简介

grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。Unix的grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的扩展,支持更多的re元字符, fgrep就是fixed grep或fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表示回其自身的字面意义,不再特殊。linux使用GNU版本的grep。它功能更强,可以通过-G、-E、-F命令行选项来使用egrep和fgrep的功能。

grep的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到屏幕,不影响原文件内容。

grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2。我们利用这些返回值就可进行一些自动化的文本处理工作。

2. grep正则表达式元字符集(基本集)

^

锚定行的开始 如:'^grep'匹配所有以grep开头的行。

$

锚定行的结束 如:'grep$'匹配所有以grep结尾的行。

匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。

*

匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。 .*一起用代表任意字符。

[]

匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。

[^]

匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。

\(..\)

标记匹配字符,如'\(love\)',love被标记为1。

\<

锚定单词的开始,如:'\

\>

锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行。

x\{m\}

重复字符x,m次,如:'0\{5\}'匹配包含5个o的行。

x\{m,\}

重复字符x,至少m次,如:'o\{5,\}'匹配至少有5个o的行。

x\{m,n\}

重复字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5--10个o的行。

\w

匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。

\W

\w的反置形式,匹配一个或多个非单词字符,如点号句号等。

\b

单词锁定符,如: '\bgrepb\'只匹配grep。

3. 用于egrep和 grep -E的元字符扩展集

+

匹配一个或多个先前的字符。如:'[a-z]+able',匹配一个或多个小写字母后跟able的串,如loveable,enable,disable等。

?

匹配零个或多个先前的字符。如:'gr?p'匹配gr后跟一个或没有字符,然后是p的行。

a|b|c

匹配a或b或c。如:grep|sed匹配grep或sed

()

分组符号,如:love(able|rs)ov+匹配loveable或lovers,匹配一个或多个ov。

x{m},x{m,},x{m,n}

作用同x\{m\},x\{m,\},x\{m,n\}

4. POSIX字符类

为了在不同国家的字符编码中保持一至,POSIX(The Portable Operating System Interface)增加了特殊的字符类,如[:alnum:]是A-Za-z0-9的另一个写法。要把它们放到[]号内才能成为正则表达式,如[A- Za-z0-9]或[[:alnum:]]。在linux下的grep除fgrep外,都支持POSIX的字符类。

[:alnum:]

文字数字字符

[:alpha:]

文字字符

[:digit:]

数字字符

[:graph:]

非空字符(非空格、控制字符)

[:lower:]

小写字符

[:cntrl:]

控制字符

[:print:]

非空字符(包括空格)

[:punct:]

标点符号

[:space:]

所有空白字符(新行,空格,制表符)

[:upper:]

大写字符

[:xdigit:]

十六进制数字(0-9,a-f,A-F)

5. Grep命令选项

-?

同时显示匹配行上下的?行,如:grep -2 pattern filename同时显示匹配行的上下2行。

-b,--byte-offset

打印匹配行前面打印该行所在的块号码。

-c,--count

只打印匹配的行数,不显示匹配的内容。

-f File,--file=File

从文件中提取模板。空文件中包含0个模板,所以什么都不匹配。

-h,--no-filename

当搜索多个文件时,不显示匹配文件名前缀。

-i,--ignore-case

忽略大小写差别。

-q,--quiet

取消显示,只返回退出状态。0则表示找到了匹配的行。

-l,--files-with-matches

打印匹配模板的文件清单。

-L,--files-without-match

打印不匹配模板的文件清单。

-n,--line-number

在匹配的行前面打印行号。

-s,--silent

不显示关于不存在或者无法读取文件的错误信息。

-v,--revert-match

反检索,只显示不匹配的行。

-w,--word-regexp

如果被\<和\>引用,就把表达式做为一个单词搜索。

-V,--version

显示软件版本信息。

6. 实例

要用好grep这个工具,其实就是要写好正则表达式,所以这里不对grep的所有功能进行实例讲解,只列几个例子,讲解一个正则表达式的写法。

$ ls -l | grep '^a'

通过管道过滤ls -l输出的内容,只显示以a开头的行。

$ grep 'test' d*

显示所有以d开头的文件中包含test的行。

$ grep 'test' aa bb cc

显示在aa,bb,cc文件中匹配test的行。

$ grep '[a-z]\{5\}' aa

显示所有包含每个字符串至少有5个连续小写字符的字符串的行。

$ grep 'w\(es\)t.*\1' aa



wc命令


wc命令的功能为统计指定文件中的字节数、字数、行数, 并将统计结果显示输出。说明:该命令统计给定文件中的字节数、字数、行数。行数、字数、字节数、文件名


基本语法:
wc [参数] 文件


       -c, –bytes
              打印字节数


       -m, –chars
              打印字数


       -l, –lines
              打印行数


       -L, –max-line-length
              打印最常行的长度


       -w, –words
              打印单词数(字数)


       –help 显示帮助并退出


       –version
              输出版本信息并退出



cat命令

linux cat 命令详解 

使用方式:cat [-AbeEnstTuv] [--help] [--version] fileName 
说明:把档案串连接后传到基本输出(萤幕或加 > fileName 到另一个档案) 
参数: 
-n 或 --number 由 1 开始对所有输出的行数编号 
-b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号 
-s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行 
-v 或 --show-nonprinting 
范例: 
cat -n textfile1 > textfile2 把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里 
cat -b textfile1 textfile2 >> textfile3 把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3 里。 
范例: 
把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里 
cat -n textfile1 > textfile2 
把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3 里。 
cat -b textfile1 textfile2 >> textfile3 
cat /dev/null > /etc/test.txt 此为清空/etc/test.txt档案内容 
cat 也可以用来制作 image file。例如要制作软碟的 image file,将软碟放好后打 
cat /dev/fd0 > OUTFILE 
相反的,如果想把 image file 写到软碟,请打 
cat IMG_FILE > /dev/fd0 
注: 
1. OUTFILE 指输出的 image 档名。 
2. IMG_FILE 指 image file。 
3. 若从 image file 写回 device 时,device 容量需与相当。 
4. 通常用在制作开机磁片。
分享到:
评论
1 楼 diyunpeng 2012-05-21  
真的学习了~

相关推荐

    tty、pty、pts等(小记) - CSDN博客1

    在 Linux 下,通过 Ctrl+Alt+F1~6 等级,可以访问六个虚拟控制台,可以看到 tty 和 stty 命令的使用。tty 命令可以显示当前终端的信息,stty 命令可以设置终端的参数。 串口(Serial Port)是一个物理设备,通常是 ...

    Shell常见用法小记

    Shell是Linux和Unix系统中的一种命令解释器,它允许用户通过命令行与操作系统进行交互。本文将深入探讨一些常见的Shell用法,这对于日常的系统管理、自动化任务和脚本编写非常有用。 首先,Shell脚本通常以所谓的...

    thinkphp5.0反序列化链小记.pdf

    下面是一个基于Linux环境下的文件写入实例,用来演示如何利用此漏洞: - 使用工具`phpggc`生成所需的payload。需要注意的是,根据作者的测试,使用`base64`编码的payload可能无法成功执行,而`urlencode`编码则可以...

    Windows下bat批处理脚本使用telnet批量检测远程端口小记

    但在Windows环境下,telnet命令并不像Linux环境下的那样直接返回执行结果的返回值。因此,直接使用telnet命令可能会遇到一些问题。 ```batch echo q | telnet -e 'q' %ip% %port% && echo "%ip%:%port% 通" || echo...

    关于MariaDB安装问题小记(CMake Error at)

    通常,这个库可以通过以下命令在不同的Linux发行版上安装: - Debian/Ubuntu: `apt-get install libaio-dev` - RedHat/Fedora/Oracle Linux: `yum install libaio-devel` - SuSE: `zypper install libaio-devel` ...

    mysql数据存储目录迁移小记

    不想重装mysql,我服务器大部分空间mount在/app下了,于想想到了linux下的ln -s命令  OK 下面开操作了(注:以下操作均在零晨1点操作,记住先将数据备份成sql文件):  1. service mysqld stop  2. 在/app 下新建...

    安装npm包管理器小结

    **四、安装问题小记** 1. **vscode中使用yarn命令,报错未知命令**: - 确保已将Yarn的全局安装路径添加到VSCode终端的PATH环境变量中,或者在VSCode内设置用户或工作区的`terminal.integrated.env.*`(根据操作...

    mysql80-community-release-el8-1.noarch.7z

    "mysql80-community-release-el8-1.noarch.7z" 文件是一个针对 Red Hat Enterprise Linux 8 和 Oracle Linux 8 的 MySQL 8.0 社区版安装包的压缩文件。它采用 .noarch 格式,意味着这个 RPM 包适用于任何架构,不...

    mysql80-community-release-fc32-1.noarch.7z

    在描述中提到的“RPM Package”,全称为Red Hat Package Manager,是Linux发行版如Fedora、CentOS等广泛使用的软件包管理工具。RPM包包含了软件的所有组件,以及元数据,用于安装、升级、查询和卸载软件。`mysql80-...

Global site tag (gtag.js) - Google Analytics