sed和awk的练习

使用sed打印出IP地址:

[[email protected] ~]# ifconfig eth0 |grep Mask|sed ‘s/^.*dr://g‘|sed ‘s/Bc.*$//g‘
192.168.1.223
[[email protected] ~]# ifconfig eth0 |grep Mask|sed -n ‘s/^.*dr:\(.*\)Bc.*$/\1/gp‘
192.168.1.223

awk打印IP:

[[email protected] ~]# ifconfig eth0 |grep Mask|awk ‘{print $2}‘|awk -F: ‘{print $2}‘
192.168.1.223
[[email protected] ~]# ifconfig eth0 |grep Mask|awk -F[:\ ] ‘{print $13}‘
192.168.1.223

使用awk内部变量的方式指定分隔符:

[[email protected] ~]# ifconfig eth0|grep Mask|awk ‘BEGIN{FS="[:\\ ]"}{print $13}‘
192.168.1.223

打印/etc/passwd文件内,$1为weblogic和tomcat的两行(使用判断语句):

[[email protected] ~]# more /etc/passwd|awk -F: ‘{if ($1=="weblogic" || $1=="tomcat" ) print $0}‘
weblogic:x:501:503::/home/weblogic:/bin/bash
tomcat:x:502:504::/home/tomcat:/bin/bash

这里使用~也是一样的效果:

[[email protected] ~]# more /etc/passwd|awk -F: ‘{if ($1~"weblogic" || $1~"tomcat" ) print $0}‘
weblogic:x:501:503::/home/weblogic:/bin/bash
tomcat:x:502:504::/home/tomcat:/bin/bash

如果$1为变量name的值,就整行输出:

[[email protected] ~]# more /etc/passwd|awk -F: ‘BEGIN{name="oracle"}{if($1~name)print $0}‘
oracle:x:500:500::/home/oracle:/bin/bash

awk内部变量的介绍:

NF:表示有多少列。

$NF:表示最后一列。

NR:表示行号。

ORS:输出记录分割符

OFS:输出字段分割符

RS: 记录分割符

[[email protected] ~]# tail -4 /etc/passwd
oracle:x:500:500::/home/oracle:/bin/bash
weblogic:x:501:503::/home/weblogic:/bin/bash
tomcat:x:502:504::/home/tomcat:/bin/bash
nx:x:102:158::/usr/NX/home/nx:/usr/NX/bin/nxserver
[[email protected] ~]# tail -4 /etc/passwd | awk ‘{print NF}‘
1
1
1
1
[[email protected] ~]# tail -4 /etc/passwd | awk -F: ‘{print NF}‘
7
7
7
7
[[email protected] ~]# tail -4 /etc/passwd | awk -F: ‘{print $NF}‘
/bin/bash
/bin/bash
/bin/bash
/usr/NX/bin/nxserver

使用awk打印端口号:

[[email protected] ~]# netstat -ntl |awk ‘{if($4~"[0-9]$") print $4}‘|awk -F: ‘{print $NF}‘
8001
8005
8009
33801

.....

使打印输出显示行号:

[[email protected] ~]# awk -F: ‘{print NR,$1}‘ /etc/passwd
1 root
2 bin
3 daemon
4 adm
5 lp
6 sync

显示$1为oracle的这一行的行号:

[[email protected] ~]# more /etc/passwd |awk -F: ‘{if ($1~"oracle") print NR}‘
39

输出时以###作为字段分隔符:

[[email protected] ~]# tail -4 /etc/passwd |awk -F: ‘BEGIN {OFS="###"}{print $1,$7,$3}‘
oracle###/bin/bash###500
weblogic###/bin/bash###501
tomcat###/bin/bash###502
nx###/usr/NX/bin/nxserver###102
时间: 2024-08-08 12:38:01

sed和awk的练习的相关文章

sed和awk之awk篇

(原创文章,谢绝转载~) awk是处理文本的另一利器,也是对文本逐行处理.awk的基本syntax是: awk 'pattern {action} ' inputfile #examples awk '/regex/ { print $0 }' inputfile 在awk中用 $1,$2,$3.... 表示每行的第1,2,3....列,而 $0 表示整行数据 另有内置变量,借助awk的这些内置变量,可以非常方便的处理文本: NF ,列数(Number of Fileds),进而 $NF 为最后

Shell脚本编程与sed,awk工具的使用--9月15日课程作业

一.shell程序的运行原理 1.脚本 脚本或程序源文件是一种文本文件,将文本文件转换成机器指令有两种转换方式: 编译执行:预处理-->编译-->汇编-->链接:事先完成,结果:二进制程序文件 例如:C, C++ 解释执行:由解释器全程参与运行过程,每次读取一行,运行一行: 例如:  Python:程序控制结构,调用编程库完成程序编写: 库文件:功能模块,在编程中可调用: Bash:调用机器上命令程序文件进行程序编写: 外部命令:各应用程序提供: 2.原理 当shell运行一个程序时,会

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

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

第14章 grep、sed、awk 正则表达式

1. 如何把 /etc/passwd 中用户uid 大于500 的行给打印出来?   awk -F ':' '$3>500' /etc/passwd2. awk中 NR,NF两个变量表示什么含义?awk -F ':' '{print $NR}' /etc/passwd  会打印出什么结果出来?    NR 表示行 : NF表示列 awk -F ':' '{print $NR}' /etc/passwd   会依次打印对应的行数的段,第一行打印第一段,第二行打印第二段... 到了最后就打印空行了 

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、awk

每次用到正则都要蛋疼一下,索性总结一下在这里. 正则 正则表达式主要分为基础正则和扩展正则.注意,正则和一般命令行输入的命令的通配符不同.正则只使用于支持这种表示法的工具,如:vi,grep,sed.awk.而ls等命令不支持这种表示,只能使用bash自身的通配符. 基础部分: [abc] 匹配括号中的一个 [^abc] 匹配非括号中的一个(取反) ^word 以word开头 word$ 以word结尾 [n1-n2] 从n1到n2之间的所有连续字符. 注意:这个连续与否,与ASCII编码有关,

grep、sed、awk

正则表达式使用单个字符串来描述.匹配一系列符合某个句法规则的字符串.在很多文本编辑器里,正则表达式通常被用来检索.替换那些符合某个模式的文本. 正则表达式由一些普通字符和一些元字符(metacharacters)组成. 检索工具:grep grep [-cinvABC] 'word' filename:根据关键字或正则表达式在文件中查找匹配的行 -c:显示匹配行数 -i:不区分大小写 -n:显示行号 -v:显示不匹配的行 -An:连匹配行的下面n行一起显示 -Bn:连匹配行的上面n行一起显示 -

bash sed和awk

随着科技的发展,软硬件的不断更新.人们通过计算机逐渐从重复性劳动工作中解脱出来,那么计算机如何通过程序执行命令来实现我们预先设定好的步骤呢,请看下图: 一.我们知道计算机由硬件和软件组成.而软件又分为系统内核跟应用程序:当用户查看一条信息,或者编译一个程序指令,那么他的交互就由计算机通过系统内核调用程序接口,执行单一或者单一指令组成的复杂的程序组成,执行完后,又通过程序接口返回到内核通过输入输出设备呈现在大家面前. 二.程序接口按照他们的语法和编译方式将程序汇编或者调用成系统内核可以识别的指令进

shell之三大文本处理工具grep、sed及awk

grep.sed和awk都是文本处理工具,虽然都是文本处理工具单却都有各自的优缺点,一种文本处理命令是不能被另一个完全替换的,否则也不会出现三个文本处理命令了.只不过,相比较而言,sed和awk功能更强大而已,且已独立成一种语言来介绍. grep:文本过滤器,如果仅仅是过滤文本,可使用grep,其效率要比其他的高很多: sed:Stream EDitor,流编辑器,默认只处理模式空间,不处理原数据,如果你处理的数据是针对行进行处理的,可以使用sed: awk:报告生成器,格式化以后显示.如果对处

Linux Shell之十 sed与awk

设计script时,有时候需要修改脚本,例如删除或置换某些关键词.像这种在script执行过程动态修改文件的做法,称为流编辑.具有流编辑能力的工具,称为流编辑器.sed是这方面的强者.另外script执行时可能要制作报表,呈现各字段信息,awk完美解决. 一.正则表达式 正则表达式是组成"样式"的基本语法,而"样式"是运用sed和awk必备的能力.sed和awk相同的运行方式是:只要符合"样式"的数据行,就对它执行指定的"操作"