1)grep文本过滤命令

1、grep基本认识

(Global  search  regular expression and  print  out the  line全局搜索研究正则表达时并显示出来)。grep命令是一种强大的文本搜索工具,根据用户指定模式,对目标文本进行匹配检查,打印匹配到的行。

2、语法:  grep   匹配条件    处理的文件名

匹配条件可以是:搜索的字符串、数字等,也可以使用正表达式,通配符等等

处理的文件名可以是:目录/文件 或 .

3.参数:

4、grep中字符的匹配次数设定

*                字符出现0到n次

?               字符出现0或1次

+                字符出现1到n次

{4}              字符出现4次

{1,5}            字符出现次数,最少1次,最多5次

{m,}            字符出现次数最少m次

(xy){4}          字符xy出现次数为4次

5.示例:

  • grep  root   pass                 ##查看pass文件中含有root字符的结果

  • grep  ^root  pass                 ##查看开头为root的结果

  • grep  root$  pass                 ##显示以root结尾的行的结果

  • grep  -i  root   pass                ##显示的时候,忽略大小写

  • grep  -E  "root|ROOT"  pass        ##显示为root或者ROOT的结果(注意。使用-E时,是有两个条件)

  • grep root pass | grep  -E "^root|root$" -v    ##在root行中,显示除了开头和结尾是root的。(-v表示反向选择)

  • grep  -E '\<...r' pass                       ##显示以r结尾(但r不是最后一个字符)且前面是三个字母的(\<表示r前面只能有三个字符)

  • grep  -E "\<...t\>" pass          ##高亮显示的字母一定是4个,且最后一个是t

  • grep ....t pass                     ##显示结果如下:

  • grep -E "\<[[:alpha:]]{3}\>|[[:digit:]]{1,}"   xniu                     ##显示含有三个小写字母或者含数字的行
  • grep -E 'xa*y'  test                                                               ##有结果可知,*表示xy中见a的个数为0到n

  • grep -E 'xa?y'  test                                           ##由结果可只,?表示a的个数为0或1个

  • 用 + 表示a的个数为1到n;{4}表示a的个数只能为4个

2)sed行编辑器

1、 sed相关介绍:

(stream  editor)是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作。用来操作纯ASCLL码的文本。处理时,把当前的行存储在临时缓冲区中,称为模式空间(pattern space),可以指定仅仅处理哪些行;处理完成时,把缓冲区的内容送到屏幕;接着下一行的处理。
   2、语法:sed  [options]      'command'   file(s)

sed    [options]    -f  scriptfile   file(s)                          
   3、常用参数

-n∶使用安静(silent)模式。在一般情况下,所有来自 STDIN的资料一般都会被列出到屏幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来

-e∶直接在指令列模式上进行 sed 的动作编辑;

-f∶直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作;

-r∶sed 的动作支援的是延伸型正规表示法的语法。(预设是基础正规表示法语法)

-i∶直接修改读取的档案内容,而不是由萤幕输出。

4、常用模式:

p           显示模式

-d           删除模式

a            向下插入模式

i            向上插入模式

c           替换模式

w           写入文件模式

r             插入文件模式

=            添加行号

5、操作示例:

  • 分别显示fstab文件中4到6行、第四和六行、第六行的内容

  • 显示除了第6行的所有行 (在进行取操作时,在p前面添加)

  • sed    -n   '/^#/p'   fstab              ##显示以#开头的内容 (其中//中添加关键字);-n  表示只显示最终结果;若没有n时,fatab中的内容会显示出来

  • cat -n fstab | sed '5,7d'    删除5到7行

  • cat -n fstab | sed  -e '5d;7d'    删除第五和第七行

  • sed  '/^#/d' fstab                          ##删除#开头的所有行

  • sed '/UUID/aword\nhello' file          ##在file文件UUID的下一行添加word;再下一行中添加hello

  • sed    '/UUID/ixniu'    fstab                ##在文件的UUID前面插入xniu

  • sed  -n  '/^#/wxniu' fstab           ##以#开头的行写入文件xniu中,-n不显示fstab的内容

  • sed    's/\<bin/hello/g' pass         ##把所有行和列中中以bin开头的修改为/hello
  • sed 's@\/@%%@g' pass           ##此时的@与/功能类似
  • sed '=' pass | sed 'N;s/\n/ /g'       ##修改\n为空;意思去掉空格。N表示可以时\n生效;=添加行号

  • sed -f rule pass                         ##在rule文件中写入要执行的变化

  • sed -n '/^#/=' fstab              ##只显示行号,无内容
  • sed  '/^#/=' fstab                 ## 显示#开头的行号和对应内容
  • sed  '$r user' fstab              ##把文件user中的内容加入fstab的最后一行
  • sed '1r user' fstab               ##把user中的内容加入第一行
  • sed '/UUID/r user' fstab      ##加在UUID所在行的下一行
  • sed   '/hello/cniu'  -i aa       ##-i修改时,同时修改文件中的内容
  • sed    'G'  pass                       ##使文件data中的每行都隔开一行显示
  • sed  '$!G'  pass                  ##文件的最后一行没有间隔
  • sed  -n '$p' pass                     ##显示最后一行的内容
  • sed '/root/,/mail/s/nologin/##/g;s/sbin/westos/g' pass        ##查看固定区域内的且修改sbin为westos

3)awk报告生成器

1、awk基本介绍

awk处理机制:awk会逐行处理文本,支持在处理第一行之前做一些准备工作,以及在处理完最后一行做一些总结性质的工作。在命令格式上分别体现如下:

BEGIN{}:读入第一行文本之前执行,一般用来做初始化操作

{}:逐行处理,逐行读入文本并执行响相应的处理。

END{}:处理完最后一行文本之后执行,一般用来输出处理结果

2、基本用法

awk  '{print  filename}'   passwd

awk   '{print  “NR”行,"NF"列}'

awk   'BEGIN{print  NAME}'

awk    'END{print  xniu}'

awk  -F : 'BEGIN{print  name}{print $1}END{XNIU}'

awk     '/bash$/'

awk   -F :  '/bash$/{print  $1}'

3、示例

  • awk -F : '{print $1}' pass                      ##分割符为:,输出第一列的内容
          
  • awk -F : '{print $1","$2}' pass           ##在输出第一列和第二列时,添加符号时用“”

  • awk -F : 'BEGIN{print "name"}{print $1}END{print "end"}' pass                  ##在输出第一列的时候,刚开始输出name,结束后输出end
  • awk -F : 'END{print  NR","NF}' pass                             ##输出pass文件的行和列

  • awk 'BEGIN{N=0}{N++}END{print N}' pass              ##使用算法的自增计算行数
  • awk  -F : '/bash$/{print $1}' /etc/passwd                        ##以:分隔符,输出以bash结尾的第一列

  • awk  -F : '/bash$/||/sh$/{print $1}' /etc/passwd           ##使用||符号可以设置两个并列条件
  • cat -n pass | awk 'NR>=4&&NR<=6{print}'             ##显示第四行到第6行的内容

  • awk -F : '/^ro/{print}' /etc/passwd                                  ##显示以ro开头行的内容
  • awk -F : '/^[a-d]/{print $1","$6}' /etc/passwd             ##显示以a-d任意字符开头第一列和第六列
  • awk -F : '/^a|nologin$/{print $1$7}' pass                        ##显示以a开头或以nologin结尾的行内容的第一和七列
  • awk -F : '$6~/bin$/{print $1" "$6}'      pass               ## 若第6列以bin结尾,则输出该行的第一列和第6列
  • awk -F : '$6!~/bin$/{print $1" "$6}' pass                   ##输出第六列不以bin结尾的行的第1、6列

例题一:    显示本机的IP

ifconfig eth0 | awk '/\<inet/{print $2}'   或者 ifconfig eth0|sed -n 2p | awk -F " " '{print $2}'   或 awk -F = '/^IPADDR0/{print $2}' /etc/sysconfig/network-scripts/ifcfg-eth0

        

例题二:查找以可以登陆系统的用户(bash类型),并且用户在home目录下

awk -F : '/bash$/&&$6~/^\/home/{print $1}' /etc/passwd

例题三:使用一条命令执行,找出/usr/share/mime/packages/freedesktop.org.xml文件中含有ICH的行,并去掉空格后存入/root/lines文件中。

sed 's/^ *//g;/ich/w/root.lines' /usr/share/mime/packages/freedesktop.org.xml

例题四:输出不含数字或特殊字符的test
   awk  '!/^[[:digit:][:punct:]]/{print}'    test

LINUX系统下的shell命令---grep、sed、awk的更多相关文章

  1. LINUX系统下的shell命令---diff、cut、sort、uniq等

    1)diff:比较两个文件或目录的不同    -b      不检查空格字符的不同    -B      不检查空白行    -c      显示全部内容,并标出不同之处    -i      不检查 ...

  2. Linux系统下利用wget命令把整站下载做镜像网站

    Linux系统下利用wget命令把整站下载做镜像网站 2011-05-28 18:13:01 | 1次阅读 | 评论:0 条 | itokit  在linux下完整的用wget命令整站采集网站做镜像 ...

  3. Linux系统下的shutdown命令用于安全的关闭/重启计算机

    Linux系统下的shutdown命令用于安全的关闭/重启计算机,它不仅可以方便的实现定时关机,还可以由用户决定关机时的相关参数.在执行shutdown命令时,系统会给每个终端(用户)发送一条屏显,提 ...

  4. 【转载】在Linux系统下用dd命令制作ISO镜像U盘启动盘

    #### 将U盘插入USB接口 #umount /dev/sdb* #dd if=/iso存放路径/XXX.iso of=/dev/sdb bs=1M ##### [转载]在Linux系统下用dd命令 ...

  5. 【Linux】---Linux系统下各种常用命令总结

    在Linux系统下,“万物皆文件”,之所以强调在强调这个概念,是因为很多人已经习惯了win系统下找找点点得那种方式和思维,因此总是会觉得linux系统下很多指令既复杂又难记.其实都是一样得东西,只是w ...

  6. linux 三剑客命令(grep,sed ,awk)

    grep 命令 :强大的文本’搜索’工具    1.grep   -n   'word'  file_name 在file_name文件中找到word所在的所有行并显示.-n 为显示行号.     2 ...

  7. 在Linux系统下用dd命令制作ISO镜像U盘启动盘

    http://os.51cto.com/art/201510/494762.htm 首先在 Linux 系统中打开终端,确认 U 盘路径: sudo fdisk -l 使用 dd 命令,格式如下: s ...

  8. 电源管理ACPI、及APM、GNU/Linux系统下的相应命令使用

    /*********************************************************************  * Author  : Samson  * Date   ...

  9. 云服务器 ECS Linux 系统下使用 dig 命令查询域名解析

    云服务器 ECS Linux 系统可以使用通常自带的 dig 命令来查询域名解析情况.本文对此进行简要说明. 查询域名 A 记录 命令格式: dig <域名> 比如,查询域名 www.al ...

随机推荐

  1. C++ 第三十四天

    c++ 已经搁了很久了,之所以捡起来是因为学校数据结构课程设置 **.我对 c++ 的掌握非常不扎实,因为除了顺序阅读 c++ primer 外就没有什么实践, 但是我又无法忍受自己写出来的 * 一样 ...

  2. 20145329 《Java程序设计》实验五总结

    实验内容: 1.用老师代码编写,实现服务器与客户端. 2.客户端与服务器连接 3.客户端中输入明文,利用DES算法加密,DES的秘钥用RSA公钥密码中服务器的公钥加密,计算明文的Hash函数值,一起传 ...

  3. Hive表的修改Alter

    1.查看创建表的信息 [show create table] hive> show create table student; OK createtab_stmt CREATE TABLE `s ...

  4. Ubuntu 16.04 + Nvidia 显卡驱动 + Cuda 8.0 (问题总结 + 解决方案)【转】

    本文转载自:https://blog.csdn.net/Zafir_410/article/details/73188228 前言 前面好一阵子忙于写论文和改论文,好久没有做新实验了,最近又回到做实验 ...

  5. windows使用Pandoc将Markdown转换为PDF文件

    pandoc下载:https://github.com/jgm/pandoc/releases/tag/1.19.2.1 //windows下载msi文件 miktex下载:https://mikte ...

  6. CentOS 7 Fail2ban防暴力破解

    1.安装 yum install epel-release -y yum install fail2ban fail2ban-systemd -y 2.配置 //新建配置 vim /etc/fail2 ...

  7. windows系统下简单node.js环境配置 安装

    国内目前关注最高,维护最好的一个关于nodejs的网站应该是http://www.cnodejs.org/ windows系统下简单nodejs环境配置. 第一步:下载安装文件 下载地址:官网 htt ...

  8. Linux 本地调试Hadoop

    将Hadoop部署后,可以使用java api进行访问,但是并不能像安装完mysql后用python自带的mysql api连接那么简单. Hadoop/share目录下有Hadoop所有的jar包, ...

  9. SSH两种验证方式原理

    本帖转自 http://www.cnblogs.com/hukey/p/6248468.html SSH验证方式有两种,分别为用户密码认证以及密钥认证. 1.用户密码认证方式 说明: (1) 当客户端 ...

  10. git tags 管理

    新建标签: git tag -a V1.1 -m "some thing" (新建标签前请先commit代码) 推送标签: git push --tags (推送标签前请先推送代码 ...