Linux三剑客 grep、awk、seed

简介

grep:适合单纯的查找或匹配文本

sed:适合编辑文本

awk:适合格式化文本,对文本进行复杂的格式化处理

1.grep

  grep -help

  【options】

  -c:只输出匹配行的计数

  -i:不区分大小写

  -h:查询多文件是不显示文件名

  -l:查询多文件时只输出包含匹配字符的文件名

  -m:显示匹配行及行号

  -s:不显示不存在或无匹配文本的错误信息

  -v:显示不包含匹配文本的所有行

  -color=auto:可以将找到的关键词部分加上颜色的显示

  【pattern】正则参数含义

  \:忽略正则表达式中特殊字符的原有含义

  ^:匹配正则表达式的开始

  $:匹配正则表达式的结束

  \<:从匹配正则表达式的行开始

  \>:到正则表达式的行结束

  []:单个字符ex:[a]即a符合

  [-]:范围ex:[a-c],即a,b,c符合

  .:所有单个字符

  *:有字符,长度可以为0

  【简单使用】匹配的是当前文件夹下

  grep ‘test’ d* 显示所有以d开头的文件中包含test的行

  grep ‘test’ aa bb cc 显示在aa,bb,cc文件中匹配test的行

  grep ‘[a-z]\{5\}’ aa 显示在aa文件中所有包含每个字符串至少有连续5个小写字符的字符串的行

  grep ‘w\(es\)t.8\1‘ aa 如果west被匹配,则es存储到内存中,并标记为1,然后搜索任一个字符(.*)这些字符后面紧跟着es(\1),找到就显示该行

  egrep或grep -E 不需要使用‘\‘进行转义

  【复杂实例】

  grep -r :搜索子目录

  grep -d skip :忽略子目录

2.sed

  利用脚本来处理文本文件

  可依照脚本的指令来处理、编辑文本文件

  主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等

  【参数说明】

  -e<script>或-expression=<script> 以选项中中指定的script来处理输入文本文件 只是在终端显示

  -i<script>或-expression=<script> 以选项中中指定的script来处理输入文本文件 修改源文件

  -f<script文件>或-file=<script文件>以选项中指定的script文件来处理输入的文本文件

  -h或-help 显示帮助

  -n或-quiet或-silent仅显示cript处理后的结果

  -v或-version显示版本信息

  【动作说明】

  a:新增 a的后面可以接字符串,而这些字符串会在新的一行出现(目前的下一行)

  c:取代,c的后面可以接字符串,这些字符串可以取代n1,n2之间的行

  d:删除, d通常后面不接任何内容

  i:插入,i后面可以接字符串,而这些字符串会在新的一行出现(目前的上一行)

  p:打印,将某个选择的数据打印,通常与参数sed -n 一起运行

  s:取代,可以直接进行取代的工作,通常这个s的动作可以搭配正则表达式。ex:1,20s/old/new/g

  【实例】

  sed -e 4a\newLine testfile 第四行添加新的字符串

     nl /etc/passwd | sed ‘2i drink tea‘  passwd显示行号输出并在第2行前插入drink tea

  nl /etc/passwd | sed ‘2,5c No 2-5 number‘ passwd显示行号输出并将2~5行内容替换成 No 2-5 number

  sed ‘s/is/are/g‘ testfile 将is换成are

  sed ‘1,3d‘ testfile 删除前三行

  sed ‘‘\%pig%d" testfile 删除包含pig的行

  sed "/^$/d" testfile 删除空白行

  sed -n ‘5,10p‘ testfile 显示5~10行

3.awk

  实用用法

  awk是一种处理文本文件的语言,是一个强大的分析工具

  -F fs or --field-separator fs:指定输入文件拆分分隔符 fs是一个字符串或者是一个正则表达式,ex:-F:

  -v var=value or --asgin var=value 赋值一个用户定义变量

  -f scriptfile or --file scriptfile 从脚本文件中读取命令

  -mf nnn and -mr nnn 对nnn值设置内在限制,-mf选项限制分配给nnn的最大块数目 -mr选项限制记录的最大数目。这两个功能是Bell实验室版awk的扩展,在标准awk中不适用  

  【用法1】

  awk ‘{[pattern] action}’ {filenames} 行号匹配语句 awk只能使用单引号

  【实例】每行按空格或tab分割

  awk ‘{print $1,$4}‘ log.txt 输出文本中每行的1,4项

  awk ‘length>8‘ log.txt 文件中找出大于8的行

  【用法2】

  awk -F 相当于内置变量 FS,指定分隔符

  【实例】

  awk -F, ‘print{$1,$2} log.txt 使用‘,‘分割

  awk -F‘[ ,]‘ ‘{print $1,$2,$5}‘ log.txt 使用多个分隔符,先使用空格分割,然后对分割结果在使用‘,’分割

  【用法3】

  awk -v 设置变量

  【实例】

  awk -va=1 ‘{print $1, $1+a}’ log.txt 设置变量a并赋值为1,打印第一列和第一列加变量a的值

  awk -va=1 -vb=2 ‘{print $1,$1+a,$1b}‘ 设置两个变量ab并赋值,打印第一列,第一列加a,第一列拼接b

  【用法4】

  awk -f {awk 脚本} {文件名}

  【实例】

  awk -f cal.awk log.txt 动作写入cal.awk中 执行脚本使用

  【运算符】  

  

  【实例】

  #过滤第一列大于2的行

  $ awk ‘$1>2‘ log.txt

  #过滤第一列等于2的行

  $ awk ‘$1==2 {print $1,$3}‘ log.txt

  【内置变量】

   

  【实例】

    $ awk ‘BEGIN{printf "%4s %4s %4s %4s %4s %4s %4s %4s %4s\n","FILENAME","ARGC","FNR","FS","NF","NR","OFS","ORS","RS";printf "---------------------------------------------\n"} {printf "%4s %4s %4s %4s %4s %4s %4s %4s %4s\n",FILENAME,ARGC,FNR,FS,NF,NR,OFS,ORS,RS}‘  log.txt

    FILENAME ARGC  FNR   FS   NF   NR  OFS  ORS   RS---------------------------------------------

    log.txt    2    1         5    1

    log.txt    2    2         5    2

    log.txt    2    3         3    3

    log.txt    2    4         4    4

    $ awk -F\‘ ‘BEGIN{printf "%4s %4s %4s %4s %4s %4s %4s %4s %4s\n","FILENAME","ARGC","FNR","FS","NF","NR","OFS","ORS","RS";printf "---------------------------------------------\n"} {printf "%4s %4s %4s %4s %4s %4s %4s %4s %4s\n",FILENAME,ARGC,FNR,FS,NF,NR,OFS,ORS,RS}‘  log.txt

    FILENAME ARGC  FNR   FS   NF   NR  OFS  ORS   RS---------------------------------------------

    log.txt    2    1    ‘    1    1

    log.txt    2    2    ‘    1    2

    log.txt    2    3    ‘    2    3

    log.txt    2    4    ‘    1    4# 输出顺序号 NR, 匹配文本行号

原文地址:https://www.cnblogs.com/dan2/p/12599657.html

时间: 2024-10-29 09:18:45

Linux三剑客 grep、awk、seed的相关文章

不看绝对后悔的Linux三剑客之awk实战精讲

一.Linux三剑客之awk命令精讲 第1章 awk基础入门 1.1 awk简介 awk不仅仅时linux系统中的一个命令,而且是一种编程语言,可以用来处理数据和生成报告(excel).处理的数据可以是一个或多个文件,可以是来自标准输入,也可以通过管道获取标准输入,awk可以在命令行上直接编辑命令进行操作,也可以编写成awk程序来进行更为复杂的运用.本章主要讲解awk命令的运用 1.2 awk环境简介 [[email protected] ~]# cat /etc/redhat-release 

Linux三剑客grep/sed/awk

grep/sed/awk被称为linux的“三剑客” grep更适合单纯的查找或匹配文本: sed更适合编辑匹配到的文本: awk更适合格式化文本,对文本进行较复杂各式处理: Grep --color=auto 或者 --color:表示对匹配到的文本着色显示 -i:在搜索的时候忽略大小写 -n:显示结果所在行号 -c:统计匹配到的行数,注意,是匹配到的总行数,不是匹配到的次数 -o:只显示符合条件的字符串,但是不整行显示,每个符合条件的字符串单独显示一行 -v:输出不带关键字的行(反向查询,反

Linux三剑客——grep命令

过滤文本grep命令 grep是一种强大的文本搜索工具命令,用于查找文件中符合指定格式的字符串,支持正则表达式.如不指定任何文件名称,或是所给予的文件为"-",则grep命令从标准输入设备读取数据.grep家族包括grep.egrep和fgrep.egrep和fgrep的命令只跟grep命令有很小不同.egrep是grep的扩展.fgrep就是fixed grep或fast grep,该命令使用任何正则表达式中的元字符表示其自身的字面意义,不在特殊.其中egrep就等同于"g

linux三剑客---grep,sed,awk与正则表达式

grep命令: grep全称:Global Regular Expression Print,即全面搜索正则表达式并把行打印出来,通过参数-E可以使用egrep的功能 grep与egrep的区别:在于grep只支持基础正则表达式,而egrep可以支持扩展的正则表达式 常用用法: [[email protected] ~]# grep [-acinv] [--color=auto] '搜寻字符串' filename 选项与参数: -a :将 binary 文件以 text 文件的方式搜寻数据 -c

linux三剑客grep,sed,awk

grep 官方帮助文档 Usage: grep [OPTION]... PATTERN [FILE]... Search for PATTERN in each FILE or standard input. PATTERN is, by default, a basic regular expression (BRE). Example: grep -i 'hello world' menu.h main.c Regexp selection and interpretation: -E, -

Linux三剑客之awk命令

awk简介 awk其名称得自于它的创始人 Alfred Aho .Peter Weinberger 和 Brian Kernighan 姓氏的首个字母.实际上 AWK 的确拥有自己的语言: AWK 程序设计语言 , 三位创建者已将它正式定义为"样式扫描和处理语言".它允许您创建简短的程序,这些程序读取输入文件.为数据排序.处理数据.对输入执行计算以及生成报表,还有无数其他的功能. awk 是一种很棒的语言,它适合文本处理和报表生成,其语法较为常见,借鉴了某些语言的一些精华,如 C 语言

Linux三剑客之一awk

之前给大家讲述了文本处理三剑客前两种,grep和sed.但是这周学习了第三种awk,感觉awk比前两个功能还要强大,相比sed也是以行进行处理,但是awk能以每一行的间隔符进行处理,用起来会更加方便.因此决定这周给大家详细介绍介绍awk. awk的基本用法:awk [options] 'pattern{action statements;..}' filename 一.options -F 指定间隔符 -v 指定变量 FS:输入字段分隔符,默认为空白字符 OFS:输出字段分隔符,默认为空白字符

Linux三剑客之awk

前言      awk是linux实际工作中最重要强大的工具,而且还是一门编程语言,可以用来处理数据和生成报告(Excel),处理的数据可以是一个或多个文件. 一>显示出某个范围内的内容 测试文件及内容如下: [[email protected] data]# cat testAwk.txt  root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nolog

Linux三剑客值awk命令详解

一.awk介绍 AWK是一种优良的文本处理工具.它不仅是 Linux 中也是任何环境中现有的功能最强大的数据处理引擎之一.这种编程及数据操作语言(其名称得自于它的创始人 Alfred Aho .Peter Weinberger 和 Brian Kernighan 姓氏的首个字母)的最大功能取决于一个人所拥有的知识.AWK 提供了极其强大的功能:可以进行样式装入.流控制.数学运算符.进程控制语句甚至于内置的变量和函数.它具备了一个完整的语言所应具有的几乎所有精美特性.实际上 AWK 的确拥有自己的