一、文本间隔

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

转载于:https://blog.51cto.com/myunix/1130147

sed和awk的常用实例 .相关推荐

  1. sed和awk的常用实例

    一.文本间隔 1.在每一行后面增加一空行 sed G guo.sh awk '{printf("%s\n\n",$0 ) }' 2.将文件中原来的空行删掉,并在在每一行后边增加一空 ...

  2. linux中sed或awk,Linux中sed和awk命令比较实例

    sed的工作原理 先读入一行,将读入的数据放入pattern space,执行编辑命令,处理完毕后把pattern space的内容打印出来,后面打印曾经去掉的回车符. 把pattern space的 ...

  3. (管道| / 重定向 / xargs)/find 与xargs结合使用/vi,grep,sed,awk(支持正则表达式的工具程序)

    原文连接:http://www.cnblogs.com/alwayswyy/p/5191137.html 本节中正则表达式的工具程序 grep,sed和awk是重点,也是难点!!! 先补充一下 一. ...

  4. 几个常用的文本处理shell 命令:find、grep、xargs、sort、uniq、tr、cut、paste、wc、sed、awk

    内容目录: find 文件查找 grep 文本搜索 xargs 命令行参数转换 sort 排序 uniq 消除重复行 用tr进行转换 cut 按列切分文本 paste 按列拼接文本 wc 统计行和字符 ...

  5. 458-Linux 三剑客实例详解(grep、sed 、awk)

    1.简介 Linux 操作文本的三大利器分别是 grep.sed .awk,简称三剑客. 大师兄 awk:最擅长取列: 二师兄 sed:最擅长取行: 三师兄 grep:最擅长过滤. 2.正则表达式 3 ...

  6. 【引用】整理Sed与Awk学习笔记(一)

    一.前言 开卷有益,在it领域有很多学习的途径,个人认为最好的学习教材是原版图书,但由于语言上的问题,大多数人只能望书兴叹!这个文档是根据我自学时的实际情况整理的,和大多数的实际需要情况所写. 其中示 ...

  7. Linux命令三剑客:grep、sed、awk总结

    文章目录 前言 一.grep 命令语法 实例 grep结合pattern正则 二.sed 命令语法 案例 三.awk 命令语法 实例 前言 最近看到了几篇关于linux命令grep.sed.awk的文 ...

  8. linux cut,sed与awk的使用

    本文讲述了linux系统中常用的文本提取命令cut,sed与awk的命令使用方法.借用了前辈的文章,非常感谢. cut用法: 原文链接:http://blog.csdn.net/u011003120/ ...

  9. SED与AWK学习笔记

    1. 基本概念 Sed是一个"非交互式"的面向字符流的编辑器. 这个面向字符流就像是我去餐厅点了一道菜让厨师做,菜都是字符,厨师做好后直接送到我面前.所以我只要下达命令就好. Se ...

最新文章

  1. 你不得不会的MarkDown--手把手教你掌握MarkDown
  2. centos6.8下安装破解quartus prime16.0以及modelsim ae安装
  3. 【Android】ActivityManager结构图
  4. CentOS系统Tomcat 8.5/9部署SSL证书
  5. k8s核心技术-Controller(DaemonSet)_部署守护进程---K8S_Google工作笔记0034
  6. ubuntu 下vivado关联vscode
  7. 第三:启发式搜索:A* 算法
  8. 从办公桌可以看透一个人
  9. 杰理蓝牙AC69xx系列开发环境搭建
  10. 深度学习模型显示工具netron
  11. wincc逻辑运算符_wincc逻辑运算符_wincc中表达式及公式
  12. 摄像头测心率(python)
  13. 奥运会-徐媛韩端建功 中国女足2-1胜瑞典迎开门红
  14. 七夕蛤蟆背后的赚钱逻辑,没想到叫两声:孤寡,就可以日赚 10 万
  15. leetcode——340.至多包含 K 个不同字符的最长子串
  16. 数组去重10种方法(干货)!!!
  17. c语言程序设计的实验报告,C语言程序设计实验报告
  18. 用于宏观经济数据分析的神经网络(Matlab代码实现)
  19. 深度时空残差网络在城市人流量预测中的应用
  20. 机器学习第四篇:详解决策树算法

热门文章

  1. 《网页设计与前端开发 Dreamweaver+Flash+Photoshop+HTML+CSS+JavaScript 从入门到精通》—— 第1章 网页设计基础知识...
  2. 关于数据库的水平切分和垂直切分的一些概念(转)
  3. cocos2d-x和objective-c中的retain()和release()
  4. Dubbo(十五)springboot工程dubbo整合SpringCloud Hystrix
  5. Android ActionBar高级自定义——设置标题居中和添加控件
  6. Android——build.prop 解析
  7. include做配置文件
  8. netty的编解码、粘包拆包问题、心跳检测机制原理
  9. JS 函数中的call,apply
  10. Python学习路线介绍