grep,sed,awk用法整理

grep

-c 打印出符合要求的行数

-i 忽略大小写              ignore

-n 连同符号一起输出          num

-v 打印出不符合要求的行

-A2 本行及下面两行

-B2 本行及上面两行

-C2 本行及上下两行

grep ^root passwd    #过滤以root开头的行
grep root$ passwd    #过滤以root结尾的行
grep -i ^root passwd    #不区分大小写,过滤以root结尾的行
grep -E "^root|root$" passwd    #过滤以root开头或者以root结尾的行,-E表示扩展正则表达式
grep -E -v "^root|root$" passwd    #-v表示反向过滤
grep -E -v "^root|root$" passwd | grep root    #过滤root在中间的行
grep -i root passwd | grep -v -i -E "^root|root$"    #过滤root在中间的行
grep -e "11" -e "22" filename   #-e可以匹配多个模式

grep ‘r.t‘ test     #过滤r和t之间只有一个字符
grep ‘r..t‘ test     #过滤r和t之间有二个字符
grep ‘r*t‘ test     #过滤r出现的任意次数
grep ‘r\**t‘ test    #过滤r,t之间有0个字符
grep ‘ro*t‘ test    #过滤r和t之间o出现的任意次数
grep -E ‘ro*t‘ test    #过滤r和t之间o出现的任意次数
grep -E ‘ro?t‘ test    #过滤r和t之间o出现的0和1次
grep -E ‘ro{1,}t‘ test    #过滤r和t之间o出现的1以上的次数
grep -E ‘ro{,3}t‘ test    #过滤r和t之间o出现的3以下的次数

sed [options] ‘[command]’ filename (p为打印  d为删除 s为替换 i为直接修改)

sed命令的选项(option):

-n :只打印模式匹配的行

-e :直接在命令行模式上进行sed动作编辑,此为默认选项

-f :将sed的动作写在一个文件内,用–f filename 执行filename内的sed动作

-i :直接修改文件内容

sed -n 3p /etc/passwd   #打印文件中的第三行

sed -n ‘/root/’p  #打印包含root的行

sed -e ‘1,4‘p -e ‘/111/p‘ -n /etc/passwd  #打印第一行到第四行以及包含111的行

sed 1d filename   删除第一行

sed ‘1,2 s/ot/to/g‘  filename  #替换1到2行中的ot为to  g表示全局替换   s表示替换开始

sed ‘/\(rot\)\(.*\)\(bash\)/\3\2\1/‘  #将3段内容重新调整顺序  没有加g表示只调整出现的第一个

sed -i ‘s/ot/to/g’  filename   #直接修改文件中ot为to

awk基本用法

awk -F ":"  ‘{pattern + action}‘ {filenames}

awk ‘{print $0}‘ /etc/passwd  #打印所有/etc/passwd文件内容  $0表示变量本身

awk -F":" ‘{ print $1 $3 }‘ /etc/passwd  #表示以冒号作为分隔符  打印第一段和第三段

cat filename |awk -F ‘:‘ ‘$3>="500"‘  #查找第三段中大于等于500的数

NF 表分割后共有多少段(也可以表示最后一段的段数)

NR 表示行数

head -n5 filename |awk -F ‘:‘ ‘{print NF}‘ #打印文件前五行中以:分割后的段数

awk -F ‘:‘ ‘NR >=20 && $1 ~/ssh/‘ filename   # 行数大于等于20 且 第一段中包含ssh‘的记录

awk -F ‘:‘ ‘{$7=$4+$3;print $3,$4,$7}‘  filename  #列出第三段  第四段 以及三四段的总和

awk -F ‘:‘ ‘$1=="root"’ filename |sed ‘s/root/toor/‘  #找到文件中第一段为root的记录并将root改为toor

awk -F ‘:‘ ‘{print $1"@"$NF}’  filename   #打印第一段@最后一段的段数

awk -F ‘:‘ ‘{sum+=$4}; END{print sum}‘ filename #以冒号分割将第四段相加

df -h|grep /dev/sda1|awk ‘{print $5}‘|cut -f1 -d%  #检测硬盘使用情况   cut经常和awk一起用 -f表示第一段 -d后面接分隔符 -c 6,9  表示切割出第6到第9个字符

原文地址:https://www.cnblogs.com/kjlysx/p/10368814.html

时间: 2024-08-05 19:06:31

grep,sed,awk用法整理的相关文章

LINUX 下 find grep sed awk 的常见基本用法特点

LINUX 下 find grep sed awk 的常见基本用法特点 只为让自己具有更高的水准,这就开始了长达6个月的小白进阶路! 这几天学习linux基础命令有点犯蒙,尤其是对文件查找这块.所有我想把一些我觉得常用的实用的参数项总结下来,大神勿喷哈... 不到之处请大家指教,小女子在此谢过了. 一.find:命令用于查找文件系统中指定的文件,其命令格式为: 1.find pathname -options [ -print  -exec  -ok ... ] (1)find 命令的参数: p

[CentOS 7系列]grep/sed/awk实战

最近准备和CoreSite - Any2 California接入商建立网络BGP邻居关系.从peeringdb (https://www.peeringdb.com/ix/142)上找到了所有接入商的信息,但是转移信息到本地不是很方便,需要进行多次文本调整,耗时较长.作为萌新,立马就想到近期学习的grep/sed/awk工具.于是就尝试处理数据. 1.下载页面内容 curl https://www.peeringdb.com/ix/142 > peering 将页面内容存入peering文件

grep,sed,awk与简单正则表达式应用

grep,sed,awk与简单正则表达式应用 这里使用的测试文件是linux /etc/passwd文件,最好是复制一份进行练习,方式对文件内容造成损坏.感觉还是要多练习才能很好的使用,习题这里就不贴了,网上一找一大把. grep:   -o 用作计算出现多少次字段  -c 打印符合要求的行数  -n 在输出符合要求的行的同时也打印行号  -v 打印不符合要求的行  -A 后跟一个数字 ps -A2表示打印符合要求的行及下面两行  -B 后跟一个数字 ps -B2表示打印符合要求的行及上面两行 

Linux三剑客grep/sed/awk

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

find/pg/grep/sed/awk命令

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目录下查找更改时

三个支持正则表达式的行处理的工具: grep/sed/awk

grep: 全称Global Regular Expression Print, 是干什么的,不多说了: 用法:grep [-options] [pattern] [filename] 选项: -c: 只输出匹配行的数目 -i: 不区分大小写 -n:显示匹配航以及行号 -l:查询多文件的时候只输出包含匹配字符的文件名 -L: 列出不匹配的文件名: -v:反向匹配,即显示不匹配的行 -h: 查询的时候不适用文件名 -s:不显示错误信息 -E 使用扩展正则表达式 //很有用啊, -A :后跟一个数字

十七. 正则以及grep ,sed,awk的简单应用

一.正则表达式:/ / grep,sed,awk 都能解释正则表达式 正则表达式:把一些特殊符号组合到一起描述字符和字符串的方法.^ 以什么开头 grep '^root' /etc/passwd$ 以什么结尾 如能登入系统的所有用 grep 'bash$'/etc/passwd. 任意一个字符 grep '^b.n' /etc/passwd 过滤取到bin的.* 所有字符* 代表前面的字符有0个或者无穷个 grep 'b*' /+ 必须用egrep 或 egrep -E 'ab+'表示前面的字符

[CentOS 7系列]grep/sed/awk高级扩展

在上一帖的实战中,我们用到了grep的"-Po"的用法.首先,我们来看看这几个参数的含义:       -P, --perl-regexp               Interpret  PATTERN as a Perl regular expression.  This is highly               experimental and grep -P may warn of unimplemented features.              -o, --on

find grep sed awk 详解

find :查找文件系统中指定的文件.可以按文件名(-name)  权限(-perm) 归属人 查找. find   要查找文件的路径   表达式 *通配符  可以添加在文件名的任意位置 常用的例子(具体可参照 find --help): find . -name 1.txt             在当前目录以及子目录下查找文件 1.txt find /tmp -name 1.txt       在/tmp目录以及子目录下查找文件 1.txt find /bin/ -perm 4755 | x