初识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 ...
随机推荐
- APP定位元素几种方法
APP元素定位和操作 webdriver 提供了八种元素定位方法: 在 Python 语言中对应的定位方法如下:find_element_by_id()find_element_by_name()fi ...
- 英语单词profile
profile 来源——linux系统文件名 [root@centos71 ~]# cat /etc/profile # /etc/profile # System wide environment ...
- sts bug SpringJUnit4ClassRunner
SpringJUnit4ClassRunner找不到,不会自动修复, 只能复制引用过去 import org.springframework.test.context.junit4.SpringJUn ...
- vim中 E212:无法打开并写入文件 的解决办法
因为centos7刚安装的时候是无法上网的,所以,需要去配置一下ifcfg-ens33文件,但实际上这个文件是只读的文件,root也无法去更改内容,这时候保存的时候需要使用 w ! sudo tee ...
- Leaflet-Leafletv0.7使用leaflet-bing-layer
digidem/leaflet-bing-layer: Bing Maps Layer for Leaflet v1.0.0:从标题就可以看出要Leaflet v1.0.0才能用.其实leaflet ...
- hive sql基础了解
会有些不一样 1 例如使用SQL 之前,要了解用了那个库,use jz_daojia 2 使用GET_JSON_OBJECT 函数等,以及参数 匹配 $.childBrithDay 挺有意思的.新玩意 ...
- 小程序BUTTON点击,去掉背景色
添加hover-class <button form-type="submit" hover-class="btn-hover"></but ...
- ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
https://blog.csdn.net/ztf312/article/details/50708302 报错原因: Numpy对逻辑表达式判别不清楚,它可以返回False如果等号两边两个式子是数值 ...
- python3中装饰器的用法总结
装饰器预备知识点 1 函数赋值给一个变量 函数名可以像普通变量一样赋值给另一个变量. def test(): print("i am just a test function") ...
- FZU 1876 JinYueTuan(排列组合)
Description Let’s have a look at the picture below Now, do you know what it’s? Yeah , O(∩_∩)O~ , It ...