grep、sed和awk命令的简单使用

grep 命令

选项 意义
-c 匹配行的数量
-i 忽略大小写
-h 查询多文件时不显示文件名
-l 只列出匹配的文件名,不列匹配行
-n 列出匹配行,并列出行号
-s 不显示不存在或无匹配的错误信息
-v 显示不包含匹配文本的所有行
-w 匹配整词
-r 递归搜索,搜子目录
-E 支持扩展的正则表达式
-F 不支持正则表达式

grep -nE "^\w+@\w+\.\w+$" a.txt

sed命令选项
选项 意义
-n 不打印所有行到标准输出
-e 将下一个字符串解析为sed编辑命令,如果只传递一个 -e可以省略
-f 正在调用sed脚本文件
sed文本定位方式
选项 意义
x x为指定行号
x,y 指定从x到y的行号范围
/pattern/ 查询包含模式的行
/pattern/pattern/ 查询包含两个模式的行
/pattern/,x 从与pattern的匹配行之间的行
x,/pattern/ 从x号行到与pattern的匹配行之间的行
x,y! 不包含x和y行号的行
sed编辑命令
选项 意义
p 打印匹配行
= 打印文件行号
a\ 在定位行号之后追加文本信息
i\ 在定位行号之前追加文本信息
d 删除定位行
c\ 用新文本替换定位文本
s 使用替换模式替换应用模式
r 从另一个文件中读文本
w 将文本写入到一个文件
y 变换字符
q 第一个模式匹配完成后退出
l 显示与八进制ASCII代码等价的控制字符
{} 在定位行执行的命令组
n 读取下一个输入行,用下一个命令处理新的行
h 将模式缓冲区文本拷贝到保持缓冲区
H 将模式缓冲区文本追加到保持缓冲区
x 互换模式缓冲区和保持缓冲区内容
g 将保持缓冲区内容拷贝到模式缓冲区
G 将保持缓冲区内容追加到模式缓冲区

sed -n ‘/hello/=‘ a.txt   打印行号

sed -n ‘/hello/p‘ a.txt   打印内容

sed -n ‘$p‘ a.txt  打印最后一行

sed -n ‘/zbq/,$p‘ a.txt  从匹配的zbq行到最后一行

[plain] view
plain
copy

  1. #!/bin/sed -f
  2. /zbq:/i\
  3. we insert a new line.

在匹配行上面插入 we insert a new line

[plain] view
plain
copy

  1. sed -n ‘s/hello/world/w b.txt‘ a.txt

把 匹配hello行替换world行 并输出到 b.txt中

[plain] view
plain
copy

  1. sed ‘/hello/r b.txt‘ a.txt

把匹配的hello用文本b.txt替换

[plain] view
plain
copy

  1. ifconfig | grep ‘inet addr‘ | sed ‘s/^.*inet addr://g‘ | sed ‘s/Mask.*$//g‘ | sed ‘s/Bcast.*//g‘

只显示ip

awk命令

变量 描述
$n 当前记录的第n个字段,字段间由FS分隔。
$0 完整的输入记录。
ARGC 命令行参数的数目。
ARGIND 命令行中当前文件的位置(从0开始算)。
ARGV 包含命令行参数的数组。
CONVFMT 数字转换格式(默认值为%.6g)
ENVIRON 环境变量关联数组。
ERRNO 最后一个系统错误的描述。
FIELDWIDTHS 字段宽度列表(用空格键分隔)。
FILENAME 当前文件名。
FNR 同NR,但相对于当前文件。
FS 字段分隔符(默认是任何空格)。
IGNORECASE 如果为真,则进行忽略大小写的匹配。
NF 当前记录中的字段数。
NR 当前记录数。
OFMT 数字的输出格式(默认值是%.6g)。
OFS 输出字段分隔符(默认值是一个空格)。
ORS 输出记录分隔符(默认值是一个换行符)。
RLENGTH 由match函数所匹配的字符串的长度。
RS 记录分隔符(默认是一个换行符)。
RSTART 由match函数所匹配的字符串的第一个位置。
SUBSEP 数组下标分隔符(默认值是\034)。

awk [-F 域分割符] ‘awk程序段‘ 输入文件

awk -f awk脚本文件 输入文件

./awk脚本文件  输入文件

[plain] view
plain
copy

  1. awk ‘{print $1,$2}‘ c.txt

打印第一和第二域  $0是全域

[plain] view
plain
copy

  1. awk -F"\t" ‘{print $1}‘ c.txt

打印以tab键分割的域

[plain] view
plain
copy

  1. awk ‘BEGIN {FS=","} {print $1}\‘ c.txt

打印以,域

[plain] view
plain
copy

  1. awk ‘BEGIN {FS=":"} $1~/bin/‘ /etc/passwd

打印以【:】为域 第一域匹配bin字符

[plain] view
plain
copy

  1. awk ‘BEGIN {FS=":"} {if ($3~10||$4~7) print $0}‘ /etc/passwd

打印以【:】为域 第三域匹配字符串10 第四域匹配字符串7

[plain] view
plain
copy

  1. awk ‘/^$/{print x+=1}‘ c.txt

打印空白行 行数

[plain] view
plain
copy

  1. #!/usr/bin/awk -f
  2. BEGIN {FS=","}
  3. {
  4. total=$2+$3+$4
  5. avg=total/3
  6. print $1,avg
  7. }

把第2,3,4域相加取平均值

[plain] view
plain
copy

  1. awk ‘BEGIN {FS=","} {print NF,NR,$0} END {print FILENAME}‘ c.txt

以,为分割符 打印,行号,全部  最后打印文件名

fps = 1

fps = 2

fps = 3

fps = 4

fps = 5

[plain] view
plain
copy

  1. awk -F"=" ‘{s+=$2} END {printf"avg=%.2f\n", s/NR}‘

统计 fps的平均数

时间: 2024-11-09 03:01:43

grep、sed和awk命令的简单使用的相关文章

日志分析查看——grep,sed,sort,awk运用

概述 我们日常应用中都离不开日志.可以说日志是我们在排查问题的一个重要依据.但是日志并不是写了就好了,当你想查看日志的时候,你会发现线上日志堆积的长度已经超越了你一行行浏览的耐性的极限了.于是,很有必要通过一些手段来高效地辅助你来快速的从日志中找到你要找的问题.本文通过一个从项目中衍生出来的例子从查找日志,筛选日志和统计日志3个方面层层递进来简述日志文件查看中一些有用的手段.(注:在linux环境下) 目录 0.查找关键日志grep 1.查找关键日志grep 2.精简日志内容 sed 3.对记录

linux(5)--补充(管道| / 重定向> / xargs)/find 与xargs结合使用/vi,grep,sed,awk(支持正则表达式的工具程序)

本节中正则表达式的工具程序 grep,sed和awk是重点,也是难点!!! 先补充一下一. 管道| / 重定向> / xargs 如:1. 管道和重定向的区别:具体可以见 http://www.cnblogs.com/chengmo/archive/2010/10/21/1856577.html以此为例: cat test.sh test1.sh 2>/dev/null | grep -n 'echo' 此时若test.sh 不存在,报错信息不会输出到屏幕中,而是转入 /dev/null中,如

grep,sed,sort,awk运用

概述 我们日常应用中都离不开日志.可以说日志是我们在排查问题的一个重要依据.但是日志并不是写了就好了,当你想查看日志的时候,你会发现线上日志堆积的长度已经超越了你一行行浏览的耐性的极限了.于是,很有必要通过一些手段来高效地辅助你来快速的从日志中找到你要找的问题.本文通过一个从项目中衍生出来的例子从查找日志,筛选日志和统计日志3个方面层层递进来简述日志文件查看中一些有用的手段.(注:在linux环境下) 目录 0.查找关键日志grep 1.查找关键日志grep 2.精简日志内容 sed 3.对记录

grep, sed 与 awk 详解

grep, sed 与 awk 相当有用 ! gerp 查找, sed 编辑, awk 根据内容分析并处理. awk(关键字:分析&处理) 一行一行的分析处理 awk '条件类型1{动作1}条件类型2{动作2}' filename, awk 也可以读取来自前一个指令的 standard input相对于sed常常用于一整行处理, awk则比较倾向于一行当中分成数个"字段"(区域)来处理, 默认的分隔符是空格键或tab键例如:last -n 5 | awk '{print $1

Shell脚本三剑客——Grep(进阶版egrep)、Sed、Awk命令

Grep命令 1.基本正则表达式实例--查找特定字符 这里我们就以存放本机所有用户的/etc/passwd文件做实例 Demo1 [[email protected] ~]# grep -n "root" /etc/passwd //-n表示显示行号 1:root:x:0:0:root:/root:/bin/bash 10:operator:x:11:0:operator:/root:/sbin/nologin 2.基本正则表达式实例--查找集合字符 有重复的字符时,可使用"

shell 中 grep、sed、awk 命令

grep 命令 grep命令基本语法 grep命令是打印匹配文本行,其全称为 Global Search Regular Expression and Print out the line:基本语法如下: grep [OPTIONS] PATTERN [FILE...] grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...] 其中,OPTIONS表示选项:PATTERN表示匹配模式,匹配模式可以是字符串.变量.正则表达式,若匹配模式中含义空格,则需要使用双

sed及awk命令的使用

sed命令 sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕.接着处理下一行,这样不断重复,直到文件末尾.文件内容并没有 改变,除非你使用重定向存储输出.Sed主要用来自动编辑一个或多个文件:简化对文件的反复操作:编写转换程序等. 命令格式 sed [options] 'comman

sed与awk命令小结

1.sed命令小结 Sed是一个非交互式文本编辑器,它可对文本文件和标准输入进行编辑,标准输入可以是来自键盘输入.文件重定向.字符串.变量,甚至来自管道的文本.Sed从文本的一个文本行或标准输入中读取数据,将其复制到缓冲区,然后读取命令行或脚本的第一个命令,对此命令要求的行号进行编辑,重复此过程,直到命令行或脚本中的所有命令都执行完毕.相对于vi等其他文本编辑器,sed可以一次性处理所有的编辑任务,显得非常高效,为用户节省了大量的时间. 1. 语法:sed [OPTION]... {script

正则表达式学习之grep,sed和awk

正则表达式是用于描述字符排列和匹配模式的一种语法,它主要用于字符串的模式分割.匹配.查找以及替换操作. 描述一个正则表达式需要字符类.数量限定符.位置限定符.规定一些特殊语法表示字符类,数量限定符和位置关系,然后用这些特殊语法和普通字符一起表示一个模式,这就是正则表达式. 正则表达式的语法规范如下: 字符类:在模式中表示一个范围,但是取值范围是一类字符中的任意一个. 数量限定符:限定字符类出现的次数. 位置限定符:描述各种字符类和普通字符之间的位置关系. 特殊字符: 正则表达式有两种规范,分别是