sed和awk
背景
设计script时,有时候需要修改脚步,如删除或置换某些关键词。这种在script执行过程动态修改文件的做法,称为流编辑。具有流编辑能力的工具,称为流编辑器(stream editor)。sed是这方面的佼佼者,可补bash的不足。另外,script执行时可能要制作报表,呈现各种字段信息。传统上,能和bash完美搭配的,非awk莫属。
正则表达式
正则表达式是组成“样式”的基本语法,而“样式”是运用sed和awk必备的能力。sed和awk相同的运行方式是:只要符合“样式”的数据行,就对它执行指定的“操作”。
有关正则表达式的文章很多。可参见:http://www.cnblogs.com/KissKnife/archive/2008/03/23/1118423.html
sed的用法
sed是一种非交互式的流编辑器,可动态编辑文件。sed的工作模式是,比对每一数据行,若符合样式,就执行指定的操作。
语法
sed '样式命令' 文件
“样式”使用一对//含括,表示寻找之意;也可以指定数据行的范围。
sed并不会更改文件内容。sed的工作方式是读取文件内容,经流编辑之后,把结果显示到标准输出。因此,如果想要存储sed的处理结果,得自行运用转向输出将结果存成其他文件。
各种用法
1 删除某一段范围的数据行:sed '1,4d' datafl 把第1到4行数据删除,剩下的显示出来。d表示删除
2 把含有“样式”的数据行删除:sed '/La/d' datafl 把含有La的行删除,剩下的显示出来。//代表搜索
sed '/[0-9]\{3\}/d' datafl 把含有3位数的行删除,剩下的显示出来。。 正则表达式的应用
3 不含有“样式”的数据行删除:sed '/La/!d' datafl 把不含有La的行删除,剩下的显示出来
4 含有“样式”的数据行显示出来:sed '/La/p' datafl 把含有La的行显示出来。但sed默认也会把不符合的数据行显示出来,所以应这样用:sed -n '/La/p' datafl -n会抑制sed显示
5 取代:sed -n 's/La/Oo/p' datafl s表示选取,第一对//中包括的字符串是搜索的目标,第二对//包括的是置换的字符串。它会把数据行中的La换成Oo 但这样只会更换第一个出现的La,若要全部置换,应使用:sed -n 's/La/Oo/gp' dafl
6 取用符合样式的字符串:sed -n 's/\(La\)/\1Oo/p' datafl 把找到的La存起来,用\1取回来再使用。执行的结果是,如数据行含有La,则第一个出现的La会置换成LaOo,然后显示这些含有La的数据行
7 找到符合样式的数据行后,再进行取代的操作:sed -n '/AAA/s/234/567/p' datafl 找到含AAA的那一行之后,将234换成567 sed -n '/AAA/,/DDD/s/B/567/p' datafl 将含有AAA到含有DDD的那几行,皆将其中的B换成567
例子 :
awk的用法 awk是一种可以处理数据,产生个时候报表的语言。工作方式是读取数据文件,将每一行数据视为一条记录,每笔记录以字段分割符分成若干字段,然后输出各个字段的值。 ps auxw | awk '{print $2}' awk对每一条记录都会套用一个“样式{操作}”,如果符合样式,就执行指定的操作。样式或操作之一,可以省略。如果只有样式,表示要显示符合样式的数据行;如果只有操作,表示对每一数据行都执行该项操作。 以下是awk常用的作用格式: awk “样式” 文件 :把符合样式的数据行显示出来 awk '{操作}' 文件 :对每一行都执行{}中的操作 awk '样式{操作}' 文件 :对符合样式的数据行,执行{}中的操作 awk的用法: 1 awk '/La/' datafl 显示含有La的数据行 2 awk '{print $1,$2}' datafl 显示datafl每一行的第1和第2个字段 3 awk '/La/{print $1,$2}' datafl 将含有关键词La的数据行的第1及第2个字段显示 4 awk -F: '/^ols3/{print $3,$4}' /etc/passwd 使用选项-F 指定:为分隔符,帐号ols3的uid及gid字段显示出来 5 awk -F: 'BEGIN{OFS="+++"}/^ols3/{print $1,$2,$3,$4,$5}' /etc/passwd 以:为分隔符,+++为输出字段分隔符,将帐号ols3的第1-5字段显示 BEGIN{}区域指定awk一开始先做初始化操作,设定OFS="+++"。变了OFS的作用是存储输出字段的分隔符。 #!/bin/bash
if [ $# -ne 1 ] ; then
echo "Usage: $0 on 或 $0 off"
exit 1
fi
OPT=$1
case "$OPT" in
[Oo][Nn]) CMD='YES';;
[Oo][Ff][Ff]) CMD='NO';;
*)
echo '选项错误:使用on或off'
exit 1;;
esac
VSFTP_conf='/etc/vsftpd.conf'
TMP_file="/tmp/tmp.$$"
if [ -e $VSFTP_conf ] ; then
sed s/^.anonymous_enable=.*/anonymous_enable=$CMD/ $VSFTP_conf > $TMP_file
mv -f $TMP_file $VSFTP_conf
echo '设置成功'
else
echo "文件:$VSFTP_conf 不存在"
fi
发表评论
-
Linux Ubuntu 10.10安装Macbuntu 10.10主题
2012-03-31 18:28 1348Macbuntu 是一个用于 Ubuntu 的Mac主题包 ... -
文件传输命令PSCP的使用
2012-03-30 15:41 1842详解使用pscp命令Linux文件上传与下载 PSCP是一个 ... -
Linux 下Mysql备份与恢复
2012-03-29 16:30 863公司项目用到了Mysql的备份与恢复操作 现把脚本程序 ... -
Shell学习(12)文件操作
2011-06-04 21:04 1133文件操作 取得目录内容 ls getconf A ... -
Shell学习(11)文字和图形接口
2011-06-03 15:57 967文字和图形接口 dialog是一种在shell script ... -
Shell学习(10)进程管理和工作控制
2011-06-03 15:53 1340进程管理和工作控制 ps,top,htop命令的使用 ... -
Shell学习(8)转向
2011-06-03 15:42 885转向 文件代码:0,1 ... -
Shell学习(6)函数
2011-06-03 15:08 952函数 Bash调用函数不会 ... -
Shell学习(5)流程控制
2011-06-03 14:54 781流程控制 Bash Shell ... -
Shell学习(4)算术运算
2011-06-03 11:10 1107算术运算 在求值 ... -
Shell学习(3)变量
2011-06-03 11:05 1085变量与字符串 Bash shell没有所谓的“数据形态”, ... -
Shell学习(7)建立函数库
2011-06-01 21:01 1220建立库函数 以获取Ip地址为例1.在一个文件夹下创建库文件m ... -
Linux Shell语法速查表(用C语言语法来作对比)【转】
2011-06-01 13:13 6编写Shell脚本的机会实在是比较少(通常在项目初期搭建开发 ... -
Shell学习(2)Bash Shell中命令行选项/参数处理
2011-05-30 16:48 16000.引言 写程序的时候经常要处理命令行参数,本文描述在 ... -
Shell学习(1)一个简单的Shell
2011-05-23 22:32 1011示例代码: #! /bin/bash # This is ... -
Linux基本命令
2011-05-23 20:55 853查看当前SHELL:echo $SHELL查看所有SHELL: ...
相关推荐
Linux 主要shell命令、sed、awk使用详解 Linux 主要shell命令详解 ...总结来说,本章节主要讲述了 shell 的工作原理、shell 的种类、shell 的一般操作及 Bash 的特性,并对 sed 编辑器和 awk 使用进行了详细的讲解。
3. 自动化脚本:在shell脚本中嵌入sed和awk命令,实现复杂的文本处理功能。 在学习Sed和awk时,读者需要注意,这些工具依赖于正则表达式进行文本匹配。因此,熟悉正则表达式的语法和使用方法对掌握sed和awk至关重要...
本文将深入探讨shell编程,以及与之紧密相关的sed、awk和grep命令,这些都是Linux系统中进行文本处理和数据操作的重要工具。 首先,让我们了解什么是Shell编程。Shell是操作系统提供的一个接口,允许用户与系统内核...
在学习和使用这两个工具时,理解正则表达式是非常重要的,因为它们是`sed`和`awk`进行模式匹配的基础。此外,熟悉基本的Shell语法,如重定向、管道和循环,也有助于更好地集成`sed`和`awk`到Shell脚本中。 总之,`...
sed与awk使用指南 如果侵犯了您的权利,请您联系我。 本书介绍了一组名字奇特的 UNIX 实用工具 :sed 和 awk 。...sed 和 awk 的学习过程是很自然的,所以本书涵盖了上述 3 个程序,而重点集 中在 sed 和 awk 。
### sed和awk简明手册知识点总结 #### 一、sed简介 - **基本概念**: - sed(stream editor)是一种非交互式的面向字符流的编辑器,它主要用于文本文件的处理,尤其适用于批量替换、删除、添加等操作。 - sed的...
9. **学习资源**:《sed与awk》一书提供了深入浅出的讲解和实例,是学习这两个工具的优秀教材。书中涵盖了基础概念、高级技巧以及实战应用,适合初学者和进阶用户。 10. **社区和交流**:通过QQ群(如书中提到的...
sed awk 学习笔记 SED 是一个“非交互式”的面向字符流的编辑器,它可以在一个地方指定所有的编辑指令,然后通过文件传递一次来执行他们。但是它在每次多于一行的处理能力方面有限制。SED 的优点是可以批量处理文件...
### 关于Shell中的sed与awk #### 一、引言 在Unix及类Unix系统(如Linux)中,`sed` 和 `awk` 是两个极其强大的文本处理工具,被广泛应用于脚本编写、数据处理以及各种自动化任务中。本文旨在深入探讨这两个工具的...
《sed与awk(第二版)》是一本深入探讨Linux/Unix系统中两个强大的文本处理工具——sed和awk的书籍。这两个工具在系统管理和自动化任务中起着至关重要的作用,尤其对于数据处理和文本操作有着无可比拟的优势。在本书中...
Linux系统中,文本处理是一项常见且重要的任务,grep、sed和awk是三个常用的文本处理工具,因其功能强大,被誉为Linux文本处理的"三剑客"。下面将详细总结这三个工具的使用方法和相关知识点。 ### grep grep是用于...
Shell、awk、sed 面试题汇总 以下是从给定的文件中生成的相关知识点: Shell ...这些知识点涵盖了 Shell、awk 和 sed 命令的使用、变量赋值和取值、文件操作、权限设置、数据处理和统计等方面。
This book is about a set of oddly named UNIX utilities, sed and awk. These utilities have many things in common, including the use of regular expressions for pattern matching. Since pattern matching ...
本文将深入探讨"Shell脚本专家指南"、"sed与awk第二版"以及"shell十三问"这三份文档所涵盖的重要知识点。 首先,"Shell脚本专家指南"详细介绍了如何编写高效且实用的Shell脚本。这包括了对Bash Shell的深入了解,如...
sed和awk是用户、程序员和管理员应用的工具。之所以称为sed是因为它是一个流编辑器(stream editor),用于对许多文件执行一系列的编辑操作。awk是根据它的开发者aho、weinberger和kernighan命名的。awk是一种编程语言...
awk&sed 详解 shell awk&sed 详解 shell awk&sed 详解 shell awk&sed 详解 shell awk&sed 详解 shell awk&sed 详解 shell