一、sed编辑器

sed命令的格式如下:

sed options script file

选项

-e script        在处理输入时,将script中指定的命令添加到已有的命令中

-f file            在处理输入时,将file中指定的命令添加到已有的命令中

-n                不产生命令输出,使用print命令来完成输出



1.在命令行定义编辑器命令

  1. $ echo "This is a test" | sed '/test/big test/'
  2. This is a big test
  1. [root@localhost sed]# vim data1.txt
  2. [root@localhost sed]# sed 's/dog/cat/' data1.txt
  3. The quick brown fox jumps over the lazy cat.
  4. The quick brown fox jumps over the lazy cat.
  5. The quick brown fox jumps over the lazy cat.
  6. The quick brown fox jumps over the lazy cat.
  7. The quick brown fox jumps over the lazy cat.
  8. The quick brown fox jumps over the lazy cat.
  9. The quick brown fox jumps over the lazy cat.
  10. [root@localhost sed]# cat data1.txt
  11. The quick brown fox jumps over the lazy dog.
  12. The quick brown fox jumps over the lazy dog.
  13. The quick brown fox jumps over the lazy dog.
  14. The quick brown fox jumps over the lazy dog.
  15. The quick brown fox jumps over the lazy dog.
  16. The quick brown fox jumps over the lazy dog.
  17. The quick brown fox jumps over the lazy dog.

2.在命令行使用多个编辑器命令

  1. [root@localhost sed]# sed -e 's/brown/green/; s/dog/cat/' data1.txt
  2. The quick green fox jumps over the lazy cat.
  3. The quick green fox jumps over the lazy cat.
  4. The quick green fox jumps over the lazy cat.
  5. The quick green fox jumps over the lazy cat.
  6. The quick green fox jumps over the lazy cat.
  7. The quick green fox jumps over the lazy cat.
  8. The quick green fox jumps over the lazy cat.
  9. [root@localhost sed]# cat data1.txt
  10. The quick brown fox jumps over the lazy dog.
  11. The quick brown fox jumps over the lazy dog.
  12. The quick brown fox jumps over the lazy dog.
  13. The quick brown fox jumps over the lazy dog.
  14. The quick brown fox jumps over the lazy dog.
  15. The quick brown fox jumps over the lazy dog.
  16. The quick brown fox jumps over the lazy dog.

3.从文件中读取编辑器命令

  1. [root@localhost sed]# cat script1.sed
  2. s/brown/green/
  3. s/fox/elephant/
  4. s/dog/cat/
  5. [root@localhost sed]# sed -f script1.sed data1.txt
  6. The quick green elephant jumps over the lazy cat.
  7. The quick green elephant jumps over the lazy cat.
  8. The quick green elephant jumps over the lazy cat.
  9. The quick green elephant jumps over the lazy cat.
  10. The quick green elephant jumps over the lazy cat.
  11. The quick green elephant jumps over the lazy cat.
  12. The quick green elephant jumps over the lazy cat.

二、gawk程序可以

①定义变量来保存数据;

②使用算数和字符串操作符处理数据;

③使用结构化编程概念(if-then)来为数据处理增减处理逻辑;

④通过提取数据文件中的数据元素,将其重新排列或格式化,生成格式化报告。



gawk是awk语言中使用gnu的一种



2.1 gawk命令格式

gawk options program file

选项

-F fs                                   指定行中划分数据字段分隔符

-f file                                 从指定的文件中读取程序

-v var=value                      定义gawk程序中的一个变量及其默认值

-mf N                                指定要处理的数据文件中的最大字段数

-mr N                                指定数据文件中的最大数据行数

-W keyword                       指定gawk的兼容模式或警告等级



2.2 从命令行读取程序脚本

  1. [root@localhost sed]# gawk '{print "Hello World!"}'
  2. This is a test
  3. Hello World!
  4. hello
  5. Hello World!
  6. This is another test
  7. Hello World!
  8. Hello World!
  9. ^C

2.3 使用数据字段变量

$0代表整个文本行

$1代表文本行中的第1个数据字段

$2代表文本行中的第2个数据字段

$n代表文本行中的第n个数据字段

  1. [root@localhost gawk]# cat data2.txt
  2. One line of test text.
  3. Two line of test text.
  4. Three line of test text.
  5. [root@localhost gawk]# gawk '{print $1}' data2.txt
  6. One
  7. Two
  8. Three
  1. [root@localhost gawk]# gawk -F: '{print $1}' /etc/passwd
  2. root
  3. bin
  4. daemon
  5. adm
  6. lp
  7. sync
  8. shutdown
  9. halt
  10. mail
  11. uucp
  12. operator
  13. games
  14. gopher
  15. ftp
  16. nobody

如果不是空格分隔符,则用-F指定



2.4 在程序中使用多个命令

  1. [root@localhost gawk]# echo "My name is Rich" | gawk '{$4="Christine"; print $0}'
  2. My name is Christine

2.5 从文件中读取程序

  1. [root@localhost gawk]# cat script2.gawk
  2. {print $1 "'s home directory is " $6}
  3. [root@localhost gawk]# gawk -F: -f script2.gawk /etc/passwd
  4. root's home directory is /root
  5. bin's home directory is /bin
  6. daemon's home directory is /sbin
  7. adm's home directory is /var/adm
  8. lp's home directory is /var/spool/lpd
  9. sync's home directory is /sbin
  10. shutdown's home directory is /sbin
  11. halt's home directory is /sbin
  12. mail's home directory is /var/spool/mail
  13. uucp's home directory is /var/spool/uucp
  14. operator's home directory is /root
  15. games's home directory is /usr/games
  16. gopher's home directory is /var/gopher
  1. [root@localhost gawk]# cat script3.gawk
  2. {
  3. text = "'s home directory is "
  4. print $1 text $6
  5. }
  6. [root@localhost gawk]# gawk -F: -f script3.gawk /etc/passwd
  7. root's home directory is /root
  8. bin's home directory is /bin
  9. daemon's home directory is /sbin
  10. adm's home directory is /var/adm
  11. lp's home directory is /var/spool/lpd
  12. sync's home directory is /sbin
  13. shutdown's home directory is /sbin

2.6 在处理数据前运行程序脚本

  1. [root@localhost gawk]# gawk 'BEGIN {print "Hello World!"}'
  2. Hello World!
  1. [root@localhost gawk]# cat data3.txt
  2. Line 1
  3. Line 2
  4. Line 3
  5. [root@localhost gawk]# gawk 'BEGIN {print "The data3 File Contents:"}
  6. {print $0}' data3.txt
  7. The data3 File Contents:
  8. Line 1
  9. Line 2
  10. Line 3

2.7 在处理数据后运行脚本

  1. [root@localhost gawk]# gawk 'BEGIN {print "The data3 File Contents:"}
  2. > {print $0}
  3. > END {print "End of file"}' data3.txt
  4. The data3 File Contents:
  5. Line 1
  6. Line 2
  7. Line 3
  8. End of file
  1. [root@localhost gawk]# cat script4.gawk
  2. BEGIN {
  3. print "The latest list of users and shells"
  4. print " UserID \t shell"
  5. print "-------- \t -------"
  6. FS=":"
  7. }
  8. {
  9. print $1 " \t " $7
  10. }
  11. END {
  12. print "This concludes the listing"
  13. }
  14. [root@localhost gawk]# gawk -f script4.gawk /etc/passwd
  15. The latest list of users and shells
  16. UserID shell
  17. -------- -------
  18. root /bin/bash
  19. bin /sbin/nologin
  20. daemon /sbin/nologin
  21. adm /sbin/nologin
  22. lp /sbin/nologin
  23. sync /bin/sync
  24. 。。。
  25. nfsnobody        /sbin/nologin
  26. This concludes the listing

初识sed和gwak的更多相关文章

  1. shell高级-----初识sed和gawk

    sed编辑器 sed说明 sed是Linux下一款功能强大的非交互流式文本编辑器,可以对文本文件进行增.删.改.查等操作,支持按行.按字段.按正则匹配文本内容,灵活方便,特别适合于大文件的编辑. 替换 ...

  2. [shell编程]初识sed和gawk

    一.sed编辑器       shell脚本最常见的用途就是处理文本文件,sed和gawk能够极大的简化需要进行的数据处理任务.sed编辑器是流编辑器,跟普通交互式文本编辑器(如vim)不同.流编辑器 ...

  3. 《Linux命令行与shell脚本编程大全》第十九章 初识sed和gawk

    这两个工具能够极大简化需要进行的数据处理任务. 19.1 文本处理 能轻松实现自动格式化.插入.修改或删除文本元素的简单命令行编辑. sed和gawk就具备上述功能 19.1.1 sed编辑器 被称为 ...

  4. shell学习记录----初识sed和gawk

    Linux命令行与shell脚本编程大全中关于sed和gawk的介绍合在一起,而且结构有点乱. 不像之前的命令写的很清楚.所以这次我需要写下来整理一下. 一.sed部分 1.1 sed命令格式如下: ...

  5. Linux的sed命令

    一.初识sed 在部署openstack的过程中,会接触到大量的sed命令,比如 # Bind MySQL service to all network interfaces.sed -i 's/12 ...

  6. linux sed命令

    一.初识sed 在部署openstack的过程中,会接触到大量的sed命令,比如 # Bind MySQL service to all network interfaces. sed -i 's/1 ...

  7. 《Linux命令行与shell脚本编程大全》 第十八章 学习笔记

    第十八章:初识sed和gawk 文本处理 sed编辑器 sed编辑器可以基于输入到命令行的或是存储在命令文本文件中的命令来处理数据流中的数据. 它每次读取一行,用提供的编辑器命令匹配数据.按命令中指定 ...

  8. 《Linux命令行与shell脚本编程大全 第3版》

    第一部分 Linux 命令行 第1章  初识Linux she1.1   什么是Linux 21.1.1 深入探究Linux 内核 31.1.2 GNU 工具 61.1.3 Linux 桌面环境 81 ...

  9. WPF学习之路初识

    WPF学习之路初识   WPF 介绍 .NET Framework 4 .NET Framework 3.5 .NET Framework 3.0 Windows Presentation Found ...

随机推荐

  1. SQL_2008安装教程(完整版)

    Win 7 win xp系统中SQL2008安装注意事项一:SQL2008 镜像下载地址 http://download.microsoft.com/download/4/C/4/4C402E48-0 ...

  2. PWA 应用

    1. 使用例子,vue官网,在手机浏览器器打开时,保存在桌面那个应用.还有饿了么网站也是PWA应用.

  3. 杂项-Map:高德地图

    ylbtech-杂项-Map:高德地图 1.返回顶部 1. 开放分类:地图手机软件高德地图(Amap) 是国内一流的免费地图导航产品,也是基于位置的生活服务功能最全面.信息最丰富的手机地图,由国内最大 ...

  4. Zlib not installed

    若提示:zlib not installed   wget http://zlib.net/zlib-1.2.8.tar.gz   tar zxf zlib-1.2.8.tar.gz cd zlib- ...

  5. 小程序报错 Please do not register multiple Pages in undefined.js

    在pages下面建了一个新页面的文件夹,但是没有在page.json里面注册,所以报了这个bug,注册一下就行了.

  6. VUX中selector组件数据错误,value-map不能正常转换接口数据

    项目中有个地方需要用到下拉框,使用VUX的selector组件,使用value-map属性进行接口数据转换未成功,出来的还是原数据 看了又看也没写错呀,字段什么的都是复制上去的,去网上查了也没查到怎么 ...

  7. select下拉框选中其中一个值

    function LoadList123() { var param = { action: "SelectShopType1"};//参数拼接 var Resultstr = & ...

  8. 如何取消bootstrap浮动时的padding值

    在bootstrap框架中使用浮动时,可以对元素添加pull-left 或 pull-right 类来达到目的.但是框架会默认给该元素添加一个15px的左右padding. <div class ...

  9. BZOJ 3611 大工程 (虚树)

    题面 国家有一个大工程,要给一个非常大的交通网络里建一些新的通道. 我们这个国家位置非常特殊,可以看成是一个单位边权的树,城市位于顶点上. 在 2 个国家 a,b 之间建一条新通道需要的代价为树上 a ...

  10. MySQLSyntaxErrorException: Row size too large 转摘自:https://confluence.atlassian.com/display/CONFKB/MySQLSyntaxErrorException%3A+Row+size+too+large

    Symptoms The following appears in the atlassian-confluence.log: Caused by: com.mysql.jdbc.exceptions ...