一、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. python使用HTMLTestRunner.py生成测试报告

    这里我使用的是python selenium webdriver环境,浏览器驱动安装见selenium 1.下载HTMLTestRunner.py:http://tungwaiyip.info/sof ...

  2. Dataphin的代码自动化能力如何助力商业决策

    前言 随着大数据趋势的迅速增长,数据的重要性与日俱增,企业内看数据.用数据的诉求越来越强烈,其中最常见的就是各种经营报表数据:老板每日早晨9点准时需要看到企业核心的经营数据,以便进行企业战略及方向决策 ...

  3. PHP之namespace小结

    命名空间的使用 在声明命名空间之前唯一合法的代码是用于定义源文件编码方式的 declare 语句.所有非 PHP 代码包括空白符都不能出现在命名空间的声明之前. PHP 命名空间中的类名可以通过三种方 ...

  4. 从单片机到系统之--uboot启动arm linux

    UBOOT官网下载地址:http://ftp.denx.de/pub/u-boot/ 很详细的UBOOT解释: https://www.crifan.com/files/doc/docbook/ubo ...

  5. shell 截取变量的字符串

    假设有变量 var=http://www.linuxidc.com/test.htm一 # 号截取,删除左边字符,保留右边字符.echo ${var#*//}其中 var 是变量名,# 号是运算符,* ...

  6. TSV 与 CSV

    TSV : Tab-separated values 用制表符分隔值. CSV : Comma-separated values 用逗号分隔值. 参考 RFC 4180 - Common Format ...

  7. Apache JMeter

    https://en.wikipedia.org/wiki/Apache_JMeter Apache JMeter 是 Apache 的一个项目,它是一个负载测试工具可以用于进行各种服务器的性能测试分 ...

  8. lombda 使用记录

    ,,,}; String str1 = Arrays.stream(arr).boxed().map(i -> i.toString()) //必须将普通数组 boxed才能 在 map 里面 ...

  9. Java导入

    导入(import)声明用于将任何类型导入编译单元.导入(import)声明出现在包声明之后,第一个类型声明之前. 有两种类型的导入声明: 单类型导入声明 按需导入声明 单类型导入声明 单类型导入声明 ...

  10. Linux 环境下安装rlwrap工具

    rlwrap项目是一个“readline包装器”,它使用GNU readline库来编辑任何其他命令的键 盘输入.通过rlwrap可以进行命令的上下切换,类似历史命令. 1.下载rlwrap rpm ...