sed和awk的常用实例
一、文本间隔
1、在每一行后面增加一空行
sed G guo.sh
awk '{printf("%s\n\n",$0 ) }'
2、将文件中原来的空行删掉,并在在每一行后边增加一空行
sed '/^$/d;G '
awk '!/^$/ {printf("%s\n\n",$0 ) }'
3在匹配式样的行前插入一空行
sed '/good/i\\'
sed '/hello/{x;p;x;}'
awk '{ if(/hello/) printf("\n\%s\n",$0);else print $0}'
4、在匹配式样的行后插入一空行
sed '/good/a\\'
sed '/hello/G'
awk '{if(/hello/) printf("%s\n\n",$0) ;else print $0}'
5、在匹配式样的行前、行后各插入一空行
sed '/hello/{x;p;x;G;}'
awk '{ if(/hello/) printf("\n\%s\n\n",$0);else print $0}'
二、文本的替换
1、在每一行查找到good,然后把good替换为bad
sed 's/good/bad/'只把每行的第一个good替换为bad
sed 's/good/bad/2'只把每行的第二个good替换为bad
sed 's/good/bad/g'把每一行的所有good替换为bad
sed 's/\(.*\)good/\1bad/'只把每一行的的最后一个good替换位bad
sed 's/\(.*\)good\(.*good\)/\1bad\2/'只把每一行的的倒数第二个good替换位bad
awk '{sub(/good/,"bad"); print $0}'只把每行的第一个good替换为bad
awk '{gsub(/good/,"bad"); print $0}'把每一行的所有good替换为bad
cat test |tr 'root' 'good'
cat test |tr 'root' 'god'
sed 's/root/good/p' test
awk '{gsub(/root/,"good");print $0}' test
awk '{gsub(/root/,"god");print $0}' test
通过对比可知tr的替换两个字串必须等长度,而sed不能把说有的root替换
2、只在出现字符串fell字符串的前提下,将找到的行中的good替换为bad
sed '/fell/ s/good/bad/g'
awk '{if(/fell/) gsub(/good/,"bad"); print $0 }'
3、只在不出现字符串fell字符串的前提下,将找到的行中的good替换为bad
sed '/fell/ !s/good/bad/g'
awk '{if(!/fell/) gsub(/good/,"bad"); print $0 }'
4、不管是good、fell还是sun,一路替换为bad
sed 's/good/bad/g;s/fell/bad/g;s/sun/bad/g'
sed 's/good\|fell\|sun/bad/g'
awk '{gsub(/good|fell|sun/,"bad") ; print $0}'
5、倒置所有行,第一行变为最后一行(模拟tac)
sed '1!G;h;$!d'
sed -n '1!G;h;$p'
awk '{A[i++]=$0} END{for (j=i-1;j>=0;j--) print A[j]}'
6、将每两行连接为一行
sed '$!N;s/\n/ /'
awk '{f=!f;if(!f) printf("%s",$0);else printf("%s\n",$0)}'
7、在文件中每隔5行显示一空行
sed '0~5G'
sed 'n;n;n;n;G'
awk '{print $0 ;i++;if(i==5) {printf( "\n") ;i=0}}'
三、选择性的显示特定行
1、显示文件的前10行
sed10q
awk '{print ;if(NR==10) exit }'
2、显示文件的第一行
sed q
awk '{ print;exit}'
3、显示文件的倒数第二行
sed -e '$!{h;d;}' -e x当文件只有一行时,输出空行
sed -e '1{$q;}' -e '$!{h;d;}' -e x当文件只有一行时,显示该行
sed -e '1{$d;}' -e '$!{h;d;}' -e x当文件只有一行时,不输出
awk '{ B=A;A=$0} END{ print B}'当文件只有一行时,输出空行
4、只显示匹配正则表达式的行
sed -n '/good/p'
sed '/good/!d'
awk '/good/ {print $0}'
awk '/good/'
grep 'good'
5、只显示不匹配正则表达式的行
sed -n '/good/!p'
sed '/good/d'
awk '!/good/ {print $0}'
grep -v 'good'
6、显示匹配行的上一行,而不显示匹配行
sed -n '/good/{g;1!p;};h'
awk '/good/ {print A} {A=$1}
7、显示匹配行的下一行,而不显示匹配行
sed -n '/good/{n;p;}'
awk '{if(A) print;A=0}/23/{A=1}'
8、显示文本的制定行
sed -n '3,5p'
sed '3,5!d'
awk '{if(NR>=3 &&NR<=5) print } '
目录: 1、不显示文件中的空行 2、删除文件的1到5行3、删除文件注释行4、打印匹配行5、显示从字符1到字符2的中间行6、匹配特别表达式7、替代文本
1、不显示文件中的空行
[guo@guo~]$ grep -v '^$' rc.local
[guo@guo~]$ sed -e '/^$/d' rc.local
[guo@guo~]$ awk '!/^$/{print $0 }' rc.local
2、删除文件的1到5行
[guo@guo~]$ cat test
[guo@guo~]$ sed -e '1,5d' test
[guo@guo~]$ awk '{if(NR>5 ) print $0} ' test
3、删除文件注释行
[guo@guo~]$ sed -e "/^#/d" rc.local
[guo@guo~]$ awk '!/^#/{print $0}' rc.local
[guo@guo~]$ grep -v '^#' rc.local
5、显示从字符1到字符2的中间行
[guo@guo~]$ sed -n -e '/hello/,/sorry/p' test1
[guo@guo~]$ awk '/hello/,/sorry/ {print $0 }' test1
6、匹配特别表达式
[guo@guo~]$ sed -n -e '/main[[:space:]]*(/,/^}/p' for.c
1、通过awk访问系统环境变量
[guo@guoawk]$ awk 'BEGIN { print ENVIRON["HOME"]; printENVIRON["PATH"]}'
/home/guo
/usr/lib/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin
2、awk中的算术运算符
[guo@guoawk]$ awk 'BEGIN {print "3+2=" 3+2 }'
3+2=5
[guo@guoawk]$ awk 'BEGIN {print "2^10=" 2^10 }'
2^10=1024
[guo@guoawk]$ awk 'BEGIN {print "(3+1)*4/2=" (3+1)*4/2}'
(3+1)*4/2=8
awk支持的运算符有+ - * / % ^。
4、awk的循环
if语句
[guo@guoawk]$ cat num
12243535
890232
232 9809
890 -8990
[guo@guoawk]$ awk '{if($1>$2) print $0}' num
890232
890 -8990
[guo@guoawk]$ awk '{if($1>$2) {print $0 ; print $1 "is larger than"$2}}' num
890232
890islarger than232
890 -8990
890islarger than-8990
if/else
[guo@guoawk]$ awk '{if($1>$2) print $1 ;else print $2}' num
3535
890
9809
890
[guo@guoawk]$ awk '{if($1>$2) {count++ ;print count} else print $2}' num
3535
1
9809
2
2012年10月9日 14:50:38
如何用sed打印文件范围从第二行至倒数第二行? 转自:http://bbs.chinaunix.net/thread-3700991-1-1.html
普通青年版:
文艺青年版:
二逼青年版:
|
sed和awk的常用实例的更多相关文章
- linux(5)--补充(管道| / 重定向> / xargs)/find 与xargs结合使用/vi,grep,sed,awk(支持正则表达式的工具程序)
本节中正则表达式的工具程序 grep,sed和awk是重点,也是难点!!! 先补充一下一. 管道| / 重定向> / xargs 如:1. 管道和重定向的区别:具体可以见 http://www. ...
- Shell常用工具find,grep,sed,awk,xargs命令
最近学习shell命令,对grep,sed,awk命令有点混乱,故小结一下,巩固一遍. 注意:find , grep , sed, awk可使用基本正则表达式字符,find,grep,awk也支持扩展 ...
- sed和awk用法
sed和awk用法 Sed sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法sed命令行格式为 ...
- Linux之sed、awk
Linux 之AWK 命令 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在对数据分析并生成报告时,显得尤为强大. 简单来说awk就是把文件逐行的读入,以空格默认分隔 ...
- Linux Shell编程第4章——sed和awk
目录 sed命令基本用法 sed命令实例 命令选项 文本定位 编辑命令 awk编程模型 awk编程实例 1.awk模式匹配 2.记录和域 3.关系和布尔运算符 4.表达式 5.系统变量 6.格式化输出 ...
- sed and awk学习笔记
sed and awk 背景 awk起源追溯至sed和grep,进而追溯至共同的行编辑器ed.实用工具grep来源于ed命令:g/re/p .实用工具awk和sed有一个共同的选项-f用于指定脚本的名 ...
- 学习笔记之Shell脚本学习指南 & sed与awk & 正则表达式
正则表达式_百度百科 http://baike.baidu.com/link?url=ybgDrN2WQQKN64_gu-diCqdeDqL8LQ-jiQ-ftzzPaNUa9CmgBRDNnyx50 ...
- sed、awk——运维必须掌握的两个工具
今天主要跟大家介绍2个非常霸道的工具,sed和awk,本篇文章将介绍这两个工具在日常运维中的常用用法,工作中这两个工具要掌握好了在结合一些管道命令.正则表达式,日常处理事务简直666啦! l Sed ...
- Linux文本三剑客超详细教程---grep、sed、awk
awk.grep.sed是linux操作文本的三大利器,合称文本三剑客,也是必须掌握的linux命令之一.三者的功能都是处理文本,但侧重点各不相同,其中属awk功能最强大,但也最复杂.grep更适合单 ...
随机推荐
- 题解报告:hdu 1159 Common Subsequence(最长公共子序列LCS)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1159 Problem Description 给定序列的子序列是给定的序列,其中有一些元素(可能没有) ...
- 3、InputStream
package com.io.file; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoun ...
- [书目20141009]《ReWork》
ReWork1: ============= 引言篇INTRODUCTION开局篇FIRST 新的现实缷负篇TAKEDOWNS 忘了“现实世界” 哪来的从错误中学习 计划即瞎猜 何必壮大? 工作狂 受 ...
- jquery js 分页
<html xmlns="http://www.w3.org/1999/xhtml"><head> <title>jQuery.pager ...
- 12 DOM操作应用
1.创建子元素oLi=document.creatElement('li') 2.将元素附给父级元素oUl.appendChild(oLi) 3.将元素插入到父级元素里的第一位子元素之前oUl.ins ...
- Wamp搭建的服务器登录的时候出现Access denied for user 'hello'@'localhost' (using password: YES)
想用自己电脑做一个服务器,然后就选择了Wamp,本来一切顺利,可是到登录的时候却出现了问题,出现了 Access denied for user 'hello'@'localhost' (using ...
- 对openjdk的javac编译器扩展了一个语法糖
我的扩展功能描述如下: 在java的现有语法中加入var来声明变量,并且可以根据初始化数据来自动类型推导. 举两个例子: 例一: 如下JAVA代码(注意这里的var是新语法): import java ...
- WordPress更改固定链接出现404
新浪SAE的前端采用的是nginx,nginx是不识别.htaccess的. 最后学习了新浪SAE官方教程——应用配置模块 – AppConfig终于把问题解决! 1.修改你SAE SDK站点目录下的 ...
- JS获取服务器端控件ID
很多时候我们需要在JS中对服务器端控件进行一些简单处理,但是这个时候没有必要回发到服务器,让服务器去处理,这个时候就又要用到JS了 那么怎么去获取这个服务器端控件呢?我们知道服务器最终返回到用户界面的 ...
- webpack3.0版本的一些改动
npm install --save / npm install -S 项目发布上线之后还会依赖用到的插件,没有这些插件,项目不能运行 npm install --save-dev / npm ins ...