sed&&awk学习笔记(1)

sed和awk的基本使用

在sed和awk中,每个指令都包括两个部分:模式和过程。模式是由斜杠(/)分割的正则表达式。过程制定一个或多个将被执行的动作。

执行过程中,读取脚本中的第一个指令并检测当前行的模式,如果没有匹配,这个过程被忽略并读取下一个指令。读取所有的指令,而不是读取与输入行匹配的第一条指令。

所有指令被解释并应用于单个行后,sed输出该行并循环处理每个输入行。awk不自动输出行,脚本中的指令控制awk最终所做的事情。

使用sed

调用sed有两种方法:在命令行上指定编辑指令,或者将他们放到一个文件中并提供这个文件的名字。

sed  -e  ‘ instruction‘   file

[[email protected] sedawk]# cat list

John Daggett, 341 King Road, Plymouth MA

Alice Ford, 22 east Broadway, Richmond VA

Orville Thomas, 11345 Oak Bridge Road, Tulsa OK

Terry Kalkas, 402 Lans Road, Beaver Falls PA

Eric Adams, 20 Post Road, Sudbury MA

Hubert Sims, 328A Brook Road, Roanoke VA

amy Wilde, 334 Bayshore Pkwy, Mountain View CA

Sal Carpenter, 73 6th Street,Boston MA

[[email protected] sedawk]# sed ‘ s/MA/, Massachusetts/‘ list

为了使Boston 和MA之间放逗号,指令用一个逗号和一个空格取代俩字母缩写词前面的空格。

有3中方式可以指定命令行上的多重指令:

  1. 用分号分隔指令。

    sed ‘ s/MA/, Massachusetts/; s/ PA/, Pennsylvania/‘ list

  2. 在每个指令前放置-e,-e就是能让sed识别脚本命令。

    sed  -e ‘ s/MA/, Massachusetts/‘ -e  ‘ s/ PA/, Pennsylvania/‘ list

  3. 使用Bourne  shell的分行指令功能。在输入单引号后按return键,就会出现多行输入的提示符(>)。

    sed ‘

    > s/MA/, Massachusetts/

    >s/ PA/, Pennsylvania/‘   list

脚本文件:

在命令行上输入较长的编辑脚本是不实际的。所以需要创建脚本文件来放sed命令。用-f来指定脚本文件的名字。

sed   -f   scriptfile    file

阻止输入行的自动显示:

sed的默认操作是输出每个输入行,-n可以阻止自动输出。当指定-n时,要输出行,就需要加打印命令p。

sed -n -e ‘s/MA/Massachusetts/p‘  list

sed的命令行选项总结:

-e    编辑随后的命令

-f    跟随脚本中的文件名

-n    阻止输入行的自动输出

使用awk:

命令行语法:

awk  ‘instructions‘  files

指令必须包含在单引号中,从而与shell区别开。可以用与sed相同的方式输入多重命令行:用分号分隔命令或使用Borune  shell的多行输入功能。

awk  -f   script  files

出错信息:

1.没有用大括号将整个过程括起来

2.没有用单引号‘‘将指令括起来

3.没有用斜杠//中将正则表达式括起来

选项总结:

-f    跟随脚本的文本名

-F    改变字段分隔符

-v    跟随var=vallue

同时使用sed和awk:

[[email protected] sedawk]# vim nameState

s/ CA/, California/

s/ MA/, Massachusetts/

s/ OK/, Oklahoma/

s/ PA/, Pennsylvania/

s/ VA/, Virginia/

[[email protected] sedawk]# sed -f nameState list

John Daggett, 341 King Road, Plymouth, Massachusetts

Alice Ford, 22 east Broadway, Richmond, Virginia

Orville Thomas, 11345 Oak Bridge Road, Tulsa, Oklahoma

Terry Kalkas, 402 Lans Road, Beaver Falls, Pennsylvania

Eric Adams, 20 Post Road, Sudbury, Massachusetts

Hubert Sims, 328A Brook Road, Roanoke, Virginia

amy Wilde, 334 Bayshore Pkwy, Mountain View, California

Sal Carpenter, 73 6th Street,Boston, Massachusetts

[[email protected] sedawk]# sed -f nameState list | awk -F, ‘{print $4}‘

Massachusetts

Virginia

Oklahoma

Pennsylvania

Massachusetts

Virginia

California

Massachusetts

补充:

s/regular/complex

由于没有指定地址,所以它只影响当前行上的第一次出现。如果在当前行没有找到regular,则出现一个错误。为了寻找同一行上的多次出现,必须指定g。

/regular/s/regular/complex/g

这个命令影响文件中与这个地址匹配的第一行。第一个regular,是一个地址,第二个是匹配替换命令的模式,要将它应用到所有的行,必须使用全局命令,在地址前放置g。

g/regular/s/regular/complex/g

g的含义是不同的,第一个g是全局命令,意味着对所有与地址匹配的行进行改变,结尾处的g是一个标志,改变当前行所有的出现。

sed&&awk学习笔记(1)

时间: 2024-08-07 18:58:36

sed&&awk学习笔记(1)的相关文章

awk学习笔记【转】

Awk学习笔记 整理:Jims of 肥肥世家 <[email protected]> Copyright © 2004 本文遵从GPL协议,欢迎转载.修改.散布. 第一次发布时间:2004年8月6日 Table of Contents 1. awk简介 2. awk命令格式和选项 2.1. awk的语法有两种形式 2.2. 命令选项 3. 模式和操作 3.1. 模式 3.2. 操作 4. awk的环境变量 5. awk运算符 6. 记录和域 6.1. 记录 6.2. 域 6.3. 域分隔符

[linux]awk 学习笔记

awk 学习笔记 最近添加了几个功能的日志,但是呢,这个日志就是输出,一般自己也发现不了问题,于是想写一些简单的监控脚本来看看日志的大致情况, 比如有没有error,每天有多少error报出来. 想到了以前运维的同时分享awk,于是想简单的学习下. 入门 最简单的输入某些列 使用$4 这种来表示 __$0__是输出整列 [root]/root/test$ps -ef|grep uwsgi|awk '{print $1,$5}' root Jul24 root Jul24 root Jul24 r

linux awk学习笔记

awk学习笔记 awk语法格式 awk '{pattern + action}' {filenames} awk作用 awk的最基本功能是在文件或者字符串中基于指定规则浏览和抽取信息,awk抽取信息后,才能进行其他文件操作.完整的awk脚本通常用来格式化文本文件中的信息. 通常,awk是以文件的一行为处理单位的.awk每接收文件的一行,再执行相应的命令,来处理文本.

Sed与Awk 学习笔记

Sed简介 Sed 是面向数据流的行编辑器.流编辑器[1]工作方式如下图,被编辑文本和编辑命令作为输入传到流编辑器, 编辑器根据编辑命令修改文本并输出结果. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 注1:文本编辑器主要分为两类,第一类是我们平时使用的可见即所得的全屏幕编辑器,如 vim,记事本.Word等.全屏幕编辑器一.是可以在文件的任意位置进行编辑, 操作十分简便:二.是所见即所得,可以随时查看编辑结果:以上两种优点使得现有的编辑器几乎都属于这一类.尽管全屏幕

awk学习笔记

1. 数据格式 id1,n1 id2,n2 ... 要对每个id进行一个n的加和 1 cat file1 | awk -F"," '{if(n[$1]>0){n[$1]=n[$1]+$2} else{n[$1]=$2}} END{for(k in n){print k","n[k]}}' > res 这个主要利用了awk的数组

awk 学习笔记

awk 使用教程 awk - pattern-directed scanning and processing language (模式定位 扫描和处理语言) Awk scans each input file for lines that match any of a set of patterns specified literally in prog or in one or more files specified as -f progfile. With each pat- tern

Linux Sed命令学习笔记

1 功能说明 sed是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕.接着处理下一行,这样不断重复,直到文件末尾.文件内容并没有改变,除非你使用重定向存储输出或者加入i参数.Sed主要用来自动编辑一个或多个文件:简化对文件的反复操作:编写转换程序等. 小结:sed的功能是,对字符串进行增加.删除.改变.查找,即增删改查! 2 语法格式 s

sed命令 学习笔记

sed 基本用法 sed : Stream EDitor 行编辑器      (全屏编辑器: vim) sed: 默认打印模式空间  默认不编辑原文件,仅对模式空间中的数据做处理; 而后,处理结束后,将模式空间打印至屏幕 sed [optiones] 'ADDressCommand' file ... -n : 静默模式 不在默认显示模式空间中的内容 -i : 直接修改原文件 -e SECRIPT -e SECRIPT : 可以同时执行多个脚本 -f /PATH/TO/SED_SCRIPT :

awk学习笔记(二)

一.awk流程控制1.分支结构if语法 单分支-if(判断){指令}双分支-if(判断){指令}else{指令}多分支-if(判断){指令}else if(判断){指令}else{指令}例子 监控某网卡收发流量ifconfig eth0 |awk 'BEGIN{print "接收流量","发送流量"}/bytes/{if($1=="RX"){x=$5}else{y=$5}}END{print x,y}'思路 先将接收和发送流量对应的列找出来,因为