当前位置:网站首页>Shell 实现文件基本操作(sed-编辑、awk-匹配)
Shell 实现文件基本操作(sed-编辑、awk-匹配)
2022-07-02 23:31:00 【梦幻通灵】
使用Shell 自带的工具,实现对文本类文件的操作,满足日常数据处理的需求。
一、命令 sed -编辑工具
sed 是一款功能强大的非交互流式文本编辑器,可实现替换文件中的单词,一次处理一行内容,首先将该行内容放入缓存,在缓存中处理,完成后将缓存内容发送到终端。
基本语法是 sed [option] [set命令] filename
选项参数
sed -e 直接在指令模式进行sed编辑,当命令行多个sed才需要-e选项;
sed -i 直接对内容进行修改,不加该参数则只是预览;
sed -f 后跟保存了sed指令的文件;
sed -n 取消默认输出。
set 命令功能参数
a add新增,a的后面连接字符串;
c change 更改,更改匹配行的内容;
d delete 删除,删除匹配的内容;
i insert 插入,想匹配行前插入内容;
s substitute 替换,替换匹配到的内容;
n 读取下一行。
demo演示
1)指定行号前或后插入数据
原始文件如下所示。
行后插入,执行命令 sed -i ‘3a北京西城’ info.txt ,在第三行前添加北京西城,这里加i参数,是直接修改文件,执行结果如下所示。
行前插入,执行命令 sed -i ‘3i北京昌平’ info.txt ,在第三行前添加北京西城,执行结果如下所示。
2)指定内容前后插入内容
支持正则
行前插入,执行命令 sed ‘/北京/ihello’ info.txt ,在北京开头之前行插入 hello,执行结果如下所示。
3)最后一行后插入内容
行后插入,执行命令 sed ‘$alove java’ info.txt ,在最后一行插入love java,执行结果如下所示。
4)删除指定范围内容
删除用 d 命令功能,执行 sed ‘5,6d’ info.txt,即 删除5-6行,执行结果如下所示。
取反删除,执行 sed ‘1,3!d’ info.txt,即 保留1-3行,执行结果如下所示。
5)删除匹配行及其后面行
匹配行及其后内容,执行命令 sed ‘/张家口/,+1d’ info.txt,使用+1,执行结果如下图所示。
6)替换匹配行第一个指定的字符串
匹配行替换,执行命令 sed ‘s/北京/北京市/’ info.txt,使用 s,将北京替换成北京市,执行结果如下图所示。
全局替换,执行命令 sed ‘s/北京/北京市/g’ info.txt,使用 g 全局匹配。
替换第2个,执行命令 sed ‘s/北京/北京市/2’ info.txt,指定2,表示第2个。
替换第2个并写入文件,执行命令 sed -n ‘s/北京/北京市/2pw infodata.txt’ info.txt,使用 -n 获取匹配的,-p 打印出来,w 写入文件。
7)每行末尾拼接 text
匹配行替换,执行命令 sed ‘s/dollar/& test/’ info.txt,使用 s,将北京替换成北京市,执行结果如下图所示。
8)每行首位拼接 #
匹配行替换,执行命令 sed ‘s/^/&#/’ info.txt,使用 s,将北京替换成北京市,执行结果如下图所示。
注意:替换类的命令,需要 / 来结尾。
9)查询匹配的内容
匹配显示字符串,执行命令 sed -n ‘/北京/p’ info.txt,使用 -n 匹配到的,p打印显示,查找北京,执行结果如下图所示。
10)执行多个sed命令
方式一:用 -e 连接,命令 sed -e ‘1d’ -e ‘s/北京/北京市/g’ info.txt,多个sed 同时执行,效果如下所示。
方式一:用 ; 连接,命令 sed ‘1d;s/北京/北京市/g’ info.txt,多个sed 同时执行,效果如下所示。
二、命令 awk -分析工具
awk 强大的文本分析工具,把文件逐行读入,以空格默认分隔符将每行切片,切片部分进行各种分析处理。
基本语法 awk option ‘pattern{action}’ filename{}
选项参数
-F 指定输入文件拆分的分隔符;
-v 赋值一个用户定义变量。
内置函数
NF 浏览记录的域的个数,根据分隔符分割后的列数;
NR 行号,已读的行数;
$n $0变量值整条记录,$1 当前行第一个域
$NF number finally 表示最后一列信息。
demo演示
数据准备:复制文件 cp /etc/passwd ./
1)匹配打印数据
执行命令,echo “我 爱 中国 北京” | awk ‘{print $1"&“$2”&“$3”&"$4}’ ,空格分割抽取数据,按占位符拼接匹配,执行效果如下图所示。
2)正则查询
执行命令,ls -a | awk ‘/^c/’ ,打印 c 开头的文件,执行效果如下图所示。
3)按列打印
打印第一列,执行命令,awk -F: ‘{print $1}’ passwd,即 $1,执行效果如下图所示。
打印倒数第一列,执行命令,awk -F: ‘{print $NF}’ passwd,即 NF,执行效果如下图所示。
打印倒数第二列,执行命令,awk -F: ‘{print $(NF-1)}’ passwd,即 NF-1,执行效果如下图所示。
4)打印指定行
打印第10-18行,执行命令,awk -F: ‘{if(NR>=10 && NR<=18){print $1}}’ passwd,执行效果如下图所示。
5)添加开始和结束信息
开始结束添加说明文字,执行命令,echo -e “henu\nzknu” | awk ‘BEGIN{print “welcome…”}{print $0}END{print "end… "}’,执行效果如下图所示。
6)循环遍历输出打印
循环,执行命令,echo “北京 上海 深圳 驻马店 " | awk -v str=”" ‘{for(n=1;n<=NF;n++){ str=str dollar n}} END {print str}’,执行效果如下图所示。
7)添加空行并显示行号
添加空行,执行命令,sed ‘G’ info.txt,隔行插入空行,执行效果如下图所示。
显示空行的行号,执行命令,awk ‘/^dollar/{print}’,NR表示行号,执行效果如下图所示。
文本操作四剑客( grep sed awk cut)
grep 用于查找匹配的行;
cut 截取数据,按列分隔符提取按个计算,不适合截取文件中存在多个空白符;
sed 增删查改,用于文本中按行截取;
awk 截取分析数据,在某个文件中以竖列截取分析数据,若存在多个空格也支持。
边栏推荐
- maya渔屋建模
- Basic use of shell script
- Slf4j + Logback日志框架
- FRP reverse proxy +msf get shell
- How to specify const array in the global scope of rust- How to specify const array in global scope in Rust?
- Install docker and use docker to install MySQL
- Architecture: database architecture design
- Confluence的PDF导出中文文档异常显示问题解决
- 英文论文有具体的格式吗?
- Multiprocess programming (V): semaphores
猜你喜欢

MySQL 23道经典面试吊打面试官

Explain in detail the significance of the contour topology matrix obtained by using the contour detection function findcontours() of OpenCV, and how to draw the contour topology map with the contour t

监控容器运行时工具Falco

Architecture: load balancing

Seckill system design

Shell脚本基本使用
![[shutter] Introduction to the official example of shutter Gallery (project introduction | engineering construction)](/img/f7/a8eb8e40b9ea25021751d7150936ac.jpg)
[shutter] Introduction to the official example of shutter Gallery (project introduction | engineering construction)

Introduction of UART, RS232, RS485, I2C and SPI
![[shutter] open the third-party shutter project](/img/1a/e35d0180612d7e79b55e7818193740.jpg)
[shutter] open the third-party shutter project

秒杀系统设计
随机推荐
Pytorch 20 realizes corrosion expansion based on pytorch
多进程编程(四):共享内存
[Chongqing Guangdong education] audio visual language reference materials of Xinyang Normal University
Briefly talk about other uses of operation and maintenance monitoring
[IELTS reading] Wang Xiwei reading P1 (reading judgment question)
AcWing_188. 武士风度的牛_bfs
Andorid 获取系统标题栏高度
详解用OpenCV的轮廓检测函数findContours()得到的轮廓拓扑结构(hiararchy)矩阵的意义、以及怎样用轮廓拓扑结构矩阵绘制轮廓拓扑结构图
布隆过滤器
collections. What is the purpose of chainmap- What is the purpose of collections. ChainMap?
论文的设计方案咋写?
百数不断创新,打造自由的低代码办公工具
论文的英文文献在哪找(除了知网)?
Feature Engineering: summary of common feature transformation methods
洛谷_P2010 [NOIP2016 普及组] 回文日期_折半枚举
Where can I check the foreign literature of economics?
教育学大佬是怎么找外文参考文献的?
Monitor container runtime tool Falco
About the practice topic of screen related to unity screen, unity moves around a certain point inside
kubernetes编写yml简单入门