初识sed和gwak
一、sed编辑器
sed命令的格式如下:
sed options script file
选项
-e script 在处理输入时,将script中指定的命令添加到已有的命令中
-f file 在处理输入时,将file中指定的命令添加到已有的命令中
-n 不产生命令输出,使用print命令来完成输出
1.在命令行定义编辑器命令
- $ echo "This is a test" | sed '/test/big test/'
- This is a big test
- [root@localhost sed]# vim data1.txt
- [root@localhost sed]# sed 's/dog/cat/' data1.txt
- The quick brown fox jumps over the lazy cat.
- The quick brown fox jumps over the lazy cat.
- The quick brown fox jumps over the lazy cat.
- The quick brown fox jumps over the lazy cat.
- The quick brown fox jumps over the lazy cat.
- The quick brown fox jumps over the lazy cat.
- The quick brown fox jumps over the lazy cat.
- [root@localhost sed]# cat data1.txt
- The quick brown fox jumps over the lazy dog.
- The quick brown fox jumps over the lazy dog.
- The quick brown fox jumps over the lazy dog.
- The quick brown fox jumps over the lazy dog.
- The quick brown fox jumps over the lazy dog.
- The quick brown fox jumps over the lazy dog.
- The quick brown fox jumps over the lazy dog.
2.在命令行使用多个编辑器命令
- [root@localhost sed]# sed -e 's/brown/green/; s/dog/cat/' data1.txt
- The quick green fox jumps over the lazy cat.
- The quick green fox jumps over the lazy cat.
- The quick green fox jumps over the lazy cat.
- The quick green fox jumps over the lazy cat.
- The quick green fox jumps over the lazy cat.
- The quick green fox jumps over the lazy cat.
- The quick green fox jumps over the lazy cat.
- [root@localhost sed]# cat data1.txt
- The quick brown fox jumps over the lazy dog.
- The quick brown fox jumps over the lazy dog.
- The quick brown fox jumps over the lazy dog.
- The quick brown fox jumps over the lazy dog.
- The quick brown fox jumps over the lazy dog.
- The quick brown fox jumps over the lazy dog.
- The quick brown fox jumps over the lazy dog.
3.从文件中读取编辑器命令
- [root@localhost sed]# cat script1.sed
- s/brown/green/
- s/fox/elephant/
- s/dog/cat/
- [root@localhost sed]# sed -f script1.sed data1.txt
- The quick green elephant jumps over the lazy cat.
- The quick green elephant jumps over the lazy cat.
- The quick green elephant jumps over the lazy cat.
- The quick green elephant jumps over the lazy cat.
- The quick green elephant jumps over the lazy cat.
- The quick green elephant jumps over the lazy cat.
- 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 从命令行读取程序脚本
- [root@localhost sed]# gawk '{print "Hello World!"}'
- This is a test
- Hello World!
- hello
- Hello World!
- This is another test
- Hello World!
- Hello World!
- ^C
2.3 使用数据字段变量
$0代表整个文本行
$1代表文本行中的第1个数据字段
$2代表文本行中的第2个数据字段
$n代表文本行中的第n个数据字段
- [root@localhost gawk]# cat data2.txt
- One line of test text.
- Two line of test text.
- Three line of test text.
- [root@localhost gawk]# gawk '{print $1}' data2.txt
- One
- Two
- Three
- [root@localhost gawk]# gawk -F: '{print $1}' /etc/passwd
- root
- bin
- daemon
- adm
- lp
- sync
- shutdown
- halt
- uucp
- operator
- games
- gopher
- ftp
- nobody
如果不是空格分隔符,则用-F指定
2.4 在程序中使用多个命令
- [root@localhost gawk]# echo "My name is Rich" | gawk '{$4="Christine"; print $0}'
- My name is Christine
2.5 从文件中读取程序
- [root@localhost gawk]# cat script2.gawk
- {print $1 "'s home directory is " $6}
- [root@localhost gawk]# gawk -F: -f script2.gawk /etc/passwd
- root's home directory is /root
- bin's home directory is /bin
- daemon's home directory is /sbin
- adm's home directory is /var/adm
- lp's home directory is /var/spool/lpd
- sync's home directory is /sbin
- shutdown's home directory is /sbin
- halt's home directory is /sbin
- mail's home directory is /var/spool/mail
- uucp's home directory is /var/spool/uucp
- operator's home directory is /root
- games's home directory is /usr/games
- gopher's home directory is /var/gopher
- [root@localhost gawk]# cat script3.gawk
- {
- text = "'s home directory is "
- print $1 text $6
- }
- [root@localhost gawk]# gawk -F: -f script3.gawk /etc/passwd
- root's home directory is /root
- bin's home directory is /bin
- daemon's home directory is /sbin
- adm's home directory is /var/adm
- lp's home directory is /var/spool/lpd
- sync's home directory is /sbin
- shutdown's home directory is /sbin
2.6 在处理数据前运行程序脚本
- [root@localhost gawk]# gawk 'BEGIN {print "Hello World!"}'
- Hello World!
- [root@localhost gawk]# cat data3.txt
- Line 1
- Line 2
- Line 3
- [root@localhost gawk]# gawk 'BEGIN {print "The data3 File Contents:"}
- {print $0}' data3.txt
- The data3 File Contents:
- Line 1
- Line 2
- Line 3
2.7 在处理数据后运行脚本
- [root@localhost gawk]# gawk 'BEGIN {print "The data3 File Contents:"}
- > {print $0}
- > END {print "End of file"}' data3.txt
- The data3 File Contents:
- Line 1
- Line 2
- Line 3
- End of file
- [root@localhost gawk]# cat script4.gawk
- BEGIN {
- print "The latest list of users and shells"
- print " UserID \t shell"
- print "-------- \t -------"
- FS=":"
- }
- {
- print $1 " \t " $7
- }
- END {
- print "This concludes the listing"
- }
- [root@localhost gawk]# gawk -f script4.gawk /etc/passwd
- The latest list of users and shells
- UserID shell
- -------- -------
- root /bin/bash
- bin /sbin/nologin
- daemon /sbin/nologin
- adm /sbin/nologin
- lp /sbin/nologin
- sync /bin/sync
- 。。。
- nfsnobody /sbin/nologin
- This concludes the listing
初识sed和gwak的更多相关文章
- shell高级-----初识sed和gawk
sed编辑器 sed说明 sed是Linux下一款功能强大的非交互流式文本编辑器,可以对文本文件进行增.删.改.查等操作,支持按行.按字段.按正则匹配文本内容,灵活方便,特别适合于大文件的编辑. 替换 ...
- [shell编程]初识sed和gawk
一.sed编辑器 shell脚本最常见的用途就是处理文本文件,sed和gawk能够极大的简化需要进行的数据处理任务.sed编辑器是流编辑器,跟普通交互式文本编辑器(如vim)不同.流编辑器 ...
- 《Linux命令行与shell脚本编程大全》第十九章 初识sed和gawk
这两个工具能够极大简化需要进行的数据处理任务. 19.1 文本处理 能轻松实现自动格式化.插入.修改或删除文本元素的简单命令行编辑. sed和gawk就具备上述功能 19.1.1 sed编辑器 被称为 ...
- shell学习记录----初识sed和gawk
Linux命令行与shell脚本编程大全中关于sed和gawk的介绍合在一起,而且结构有点乱. 不像之前的命令写的很清楚.所以这次我需要写下来整理一下. 一.sed部分 1.1 sed命令格式如下: ...
- Linux的sed命令
一.初识sed 在部署openstack的过程中,会接触到大量的sed命令,比如 # Bind MySQL service to all network interfaces.sed -i 's/12 ...
- linux sed命令
一.初识sed 在部署openstack的过程中,会接触到大量的sed命令,比如 # Bind MySQL service to all network interfaces. sed -i 's/1 ...
- 《Linux命令行与shell脚本编程大全》 第十八章 学习笔记
第十八章:初识sed和gawk 文本处理 sed编辑器 sed编辑器可以基于输入到命令行的或是存储在命令文本文件中的命令来处理数据流中的数据. 它每次读取一行,用提供的编辑器命令匹配数据.按命令中指定 ...
- 《Linux命令行与shell脚本编程大全 第3版》
第一部分 Linux 命令行 第1章 初识Linux she1.1 什么是Linux 21.1.1 深入探究Linux 内核 31.1.2 GNU 工具 61.1.3 Linux 桌面环境 81 ...
- WPF学习之路初识
WPF学习之路初识 WPF 介绍 .NET Framework 4 .NET Framework 3.5 .NET Framework 3.0 Windows Presentation Found ...
随机推荐
- 【C++11新特性】 C++11智能指针之shared_ptr
C++中的智能指针首先出现在“准”标准库boost中.随着使用的人越来越多,为了让开发人员更方便.更安全的使用动态内存,C++11也引入了智能指针来管理动态对象.在新标准中,主要提供了shared_p ...
- hdu 1007 Quoit Design (经典分治 求最近点对)
Problem Description Have you ever played quoit in a playground? Quoit is a game in which flat rings ...
- C#生成一个按时间排序的DUID
/// <summary> /// 创建一个按时间排序的Guid /// </summary> /// <returns></returns> publ ...
- 汇编 “error A2031”
assume cs:code code segment main: mov ax,0020h mov ds,ax ;指定段地址0200h mov dx,0h mov cx,003fh s: mov [ ...
- [CSP-S模拟测试]:联盟(搜索+树的直径)
题目描述 $G$国周边的$n$个小国家构成一个联盟以抵御$G$国入侵,为互相支援,他们建立了$n−1$条双向通路,使得任意两个国家可以经过通路相互到达.当一个国家受到攻击时,所有其它国家都会沿着最短路 ...
- 111、TensorFlow 初始化变量
# 显式的初始化时非常有用的 # 因为它可以让你不用重复进行繁重的初始化工作 # 当你重新从checkpoint文件中加载一个模型的时候 # 当随机初始化变量被配置在分布式的配置文件中 # 为了在开始 ...
- QTP--启动IE浏览器的三种方式
第一种方式 创建浏览器对象模式 如果提示无法创建对象时需要先打开对象. Set ie = CreateObject("InternetExplorer.Application" ...
- ASP.NET开发知识总结
1.统一异常处理 某商城采用的异常处理方式,是全局统一捕捉,统一处理 思路: 一.定义异常过滤器 实现 MyExceptionFilter : FilterAttribute,IExceptio ...
- Linux(Ubuntu)常用命令(二)
归档管理: 打包: tar -cvf xxx.tar 打包对象 (一般来说就是 -cvf 一起用)但这种不压缩的打包通常不用,接下来会说. -options:-c 生成档案文件,创建打包文件. ...
- 13. Jmeter-定时器
Jmeter-定时器介绍与使用 固定定时器 Uniform Random Timer Precise Throughput Timer Constant Throughput Timer 高斯随机定时 ...