6.文本三剑客--sed、awk

news2024/12/23 22:53:16

文章目录

  • 文本三剑客
    • sed
      • 介绍
      • 命令介绍
      • 打印内容
      • 删除
      • 替换
      • 插入
      • 分组

文本三剑客

sed

介绍

sed编辑器

sed是一种流编辑器,流编辑器会在编辑器处理数据之前基于预先提供的一组规则来

编辑数据流。

sed编辑器可以根据命令来处理数据流中的数据,这些命令要么从命令行中输入,要

么存储在一个命令文本文件中。

sed的工作流程主要包括读取、执行和显示三个过程:

  • 读取:sed从输入流 (文件、管道、标准输入)中读取一行内容并存储到临时的缓冲区中(又称模式空间,pattern space)
  • 执行:默认情况下,所有的sed命令都在模式空间中顺序地执行,除非指定了行的地址,否则sed命令将会在所有的行上依次执行。
  • 显示:发送修改后的内容到输出流。在发送数据后,模式空间将会被清空。在所有的文件内容都被处理完成之前,上述过程将重 复执行,直至所有内容被处理完。

sed对数据的处理是对缓冲区的文件进行处理,一般不会对源文件进行修改

在所有的文件内容都被处理完成之前,上述过程将重复执行,直至所有内容被处理完。
注意:默认情况下所有的sed命令都是在模式空间内执行的,因此输入的文件并不会发生任何变化,除非是用重定向存储输出。

对于很大的文件,流编辑器处理会非常慢,通过IO一行一行处理

处理方法:1. 将文件通过cat显示,再通过管道符传送

2. 将大文件切分成小文件再处理

命令介绍

命令格式:

sed -e '操作' 文件1 文件2
sed -n -e '操作' 文件1 文件2
sed -f 脚本文件 文件1 文件2
sed -i -e '操作' 文件1 文件2


sed -e 'n{          ##   n   指定行号
操作1
操作2

}' 文件1 文件2
常用选项:

-e 或 --expression=  :表示用指定命令来处理输入的文本文件,只有一个操作命令时					  可省略,一般在执行多个操作命令使用

-f 或 --file=  :表示用指定的脚本文件来处理输入的文本文件

-h 或  --help  :显示帮助

-n 、--quiet 或 silent  :禁止sed编辑器输出,
						 但可以与   p   命令一起使用完成输出

-i  :直接修改目标文本文件
常用操作:

s :替换,替换指定字符

d :删除,删除选定的行

a :增加,在当前行下面增加一行指定内容

i :插入,在选定行上面插入一行指定内容

c :替换,将选定行替换为指定内容

y :字符转换,转换前后的字符长度必须相同

p :打印,如果同时指定行,表示打印指定行;
	    如果不指定行,则表示打印所有内容;
        如果有非打印字符,则以ASCII码输出,其通常与  -n   选项一起使用
        
= :打印行号


l(小写L) :打印数据流中的文本和不可打印的ASCII字符(比如结束符$、制表符\t)

打印内容

sed -n -e 'p' file     ##打印内容
cat file | sed -n 'p'   ##只有一个操作命令  -e  可省略

cat file | sed -n '='   ##打印行号
cat file | sed -n 'l'   ##打印内容包括换行符等

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

cat file | sed -n -e '=' -e 'p'   ##同时显示行号和内容
cat file | sed -n '=;p'    ##实现多个命令的同时执行
cat file | sed -n '= 回车 p'

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

cat file | sed -n '4p'    ##打印第四行
cat file | sed -n '$p'    ##打印最后一行
cat file | sed -n '1,3p'  ##打印1到3行
cat file | sed -n '4p;$p'  ##打印第四和最后一行
cat file | sed -n '1,+3p'  ##打印第一行以及之后的连续三行
cat file | sed '5q'        ##执行到第五行退出,就显示前五行

在这里插入图片描述

cat file | sed -n 'p;n'    ##显示奇数行    ;n 表示移动到下一行
##第一次执行在第一行,通过p打印,  添加  n  将sed处理的行到第二行,结束
##第二执行时,自动到第三行,通过p打印,再自动跳转到下一行,结束执行

cat file | sed -n 'n;p'   ##显示偶数行

cat file | sed -n '2,${n;p}'  ##从第二行到最后行,执行  n;p  操作

cat file | sed -n '3 {p;n;n;p}' ## 只在第三行处理

在这里插入图片描述

##通过字符串打印行内容
##  使用   //    中间添加字符串,能使用正则表达式

cat file | sed -n '/root/p'   ##将包含 root 字符串 的行打印出来
cat file | sed -n '/^root/p'  ##打印以root开头的行

cat file | sed -nr '/root|ftp/p'  ##同时打印两个
cat file | sed -n '/root\|ftp/p'

cat file | sed -n '2,/ftp/p'    ##从第二行开始,显示到第一个FTP的内容

扩展正则要添加  -r       不添加的话要使用   \

在这里插入图片描述

删除

cat file | sed '3d'     ##删除第三行
cat file | sed '3,5d'   ##删除3到5行
cat file | sed '$d'     ##删除最后一行

在这里插入图片描述

cat file | sed '/login$/d'  ##删除以什么什么结尾的行
cat file | sed '/bash$/!d'  ##删除不是以 bash  结尾的行
cat file | sed -r '/[^(bash)]$/d'

在这里插入图片描述

cat file | sed '/2/d'   ##删除包含2的行
cat file | sed -r '/2|3/d'   ##删除包括2或者3的行
cat file | sed -r '2,/3/d'   ##从第二行开始删除到含有第一个3的行

在这里插入图片描述

cat file | sed -r '/2/,/3/d'  ##从第一个包含2的行删到第一个包含3的行

cat file | sed  '/2/,/3/d'  ##在删除时,不会停止,在第一个结束后,还会在后                             面继续找匹配的行
##从第一个包含字符串1的行开始删到第一个包含字符串2的行,之后行会重复之前的规则操作

在这里插入图片描述

##删除空行的方法
grep -v "^$"
tr -s '\n'
sed '/^$/d'

在这里插入图片描述

替换

s/abc/123/2  ##替换第二个abc为123
s/abc/123/g  ##替换所有的abc
s/abc/123/p  ##替换并打印行

在这里插入图片描述

cat file | sed -n 's/root/admin/p'  ##替换root并打印替换的行
cat file | sed -n 's/root/admin/2p'
cat file | sed -n 's/root//gp'     ##删除root字符不删除行

在这里插入图片描述

cat file | sed -n 's/^#//p'
cat file | sed -i -n 's/^/#/p'  ##批量添加 #  并修改文件

在这里插入图片描述

cat file | sed '5,10 s/^#//'    ##5到10行删除#
cat file | sed 's/^#//;n'     ##删除奇数行的#

在这里插入图片描述

cat file | sed -n '/swap/ s/^/#/p'  ##将包含字符串的行替换
cat file | sed -n '/^UUID/ s/^/#/p'

cat file | sed 's/.*swap.*/#&/'   ##  & 表示前面正则所匹配到的行

在这里插入图片描述

cat file | sed '10,20 s/^/#/w 123.txt'   ##将修改的行保存到其他文件
cat file | sed -n '10,20 s/^/#/p' > 123.txt

在这里插入图片描述

cat file | sed -n 's/\/bin\/bash/\/sbin\/nologin'

cat file | sed -n 's#/bin/bash#/sbin/nologin#p' 
##可以将分隔符替换成其他符号,数字也行

cat file | sed -n 's9\945\9\99\98\939g'  ##将94599替换为9893

在这里插入图片描述

##把以root开头的行注释了
##将ftp都替换成mysed
##把以nologin为结尾的行删除

vim mysed
/^root/ s/^/#/
s/ftp/mysed/g
/nologin$/d

sed -f mysed /opt/file

插入

sed '10c hello world' file  ##替换指定行的整行内容

在这里插入图片描述

sed 'y/145/abc' file   ##将145转换为abc,对应关系

在这里插入图片描述

sed '1a 123' file   ##在第一行下面插入
sed '$a 123' file   ##在最后一行插入
sed '1,3a 123' file
sed '1,3i 123' file  ##在指定行上面

在这里插入图片描述

sed '1r 123.txt' file   ##在第一行后读取文件内容,实现文件合并

sed '/^#t/i 123' file   ##行号可以是字符串

在这里插入图片描述

sed '1,3H;$G' file   ##将1到3复制到最后
sed '/^$/d'

sed '1,3H;10,$G' file  ##将1到3行复制到10到最后,每行都粘贴
 
 ##剪切   保持空间
sed '1,3{H;d};$G' file

在这里插入图片描述

分组

sed -r 's/(111)(222)(333)/\3\2\1/'
\3  代表第三组
\2 代表第二组
sed -r 's/(^.)(.*)(.$)/\3\2\1/'          ##实现第一个和最后一个进行交换

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/518378.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高阶python | 堆栈列表:RPN应用(模拟逆波兰式功能实现)

python版本:3.10 在列表中,append和pop方法有一个特殊的用途。可以在列表上使用这两个方法让列表变成一个堆栈使用。 这就是一个栈,它是先进后出,类似单门轿厢电梯一样的设计,出入口共用 堆栈最有用的应用之一就是做逆…

【社区团购】预制菜零售如何打造精准社群?

预制菜作为现代生活的新型“网红”食品,其受欢迎程度日益提高。而在商业竞争日益激烈的当下,如何让你的预制菜零售业务(文章编辑ycy6221)具有巨大的竞争优势呢?社区团购是一个不错的切入点,这不仅是为了扩大…

5月12号软件资讯更新合集.....

Vue 3.3 “浪客剑心” 发布 Vue 3.3 已正式发布&#xff0c;代号 "Rurouni Kenshin"&#xff08;浪客剑心&#xff09;。 公告写道&#xff0c;此版本专注于改进开发者使用体验 —— 特别是 SFC<script setup> 与 TypeScript 的结合使用。一同发布的还有 Vue…

【C语言】操作符详解(上)

操作符详解&#xff08;上&#xff09; 1.操作符分类2.算数操作符3.移位操作符3.1 右移3.2 左移 4.位操作符4.1位操作符发的应用 5.赋值操作符6.单目操作符7.关系操作符8.逻辑操作符 1.操作符分类 算术操作符移位操作符位操作符赋值操作符单目操作符关系操作符逻辑操作符条件操…

Vue3-黑马(四)

目录&#xff1a; &#xff08;1&#xff09;vue3-基础-axios-获取数据 &#xff08;2&#xff09;vue3-基础-axios-发送数据 &#xff08;3&#xff09;vue3-基础-axios-baseURL &#xff08;1&#xff09;vue3-基础-axios-获取数据 第三方库axios是对xhr的封装&#xff0…

智安网络|网络安全威胁风险分析:识别以及预防黑客和钓鱼攻击

随着网络技术的不断发展和普及&#xff0c;网络安全问题日益严峻。黑客、病毒、恶意软件、钓鱼攻击等威胁不断涌现&#xff0c;给个人、企业、国家的信息安全带来了极大的威胁。如何识别、分析和预防网络安全威胁已成为所有人必须要解决的问题。本篇文章将从黑客攻击和钓鱼攻击…

proc文件系统

proc介绍 (1)proc是虚拟文件系统&#xff0c;虚拟的意思就是proc文件系统里的文件不对应硬盘上任何文件&#xff0c;我们用去查看proc目录下的文件大小都是零,是接受到请求才动态生成的&#xff1b; (2)proc文件系统是开放给上层了解内核运行状态的窗口&#xff0c;通过读取pro…

如何通过品牌矩阵号赋能品牌?

小红书作为年轻人的“消费决策”平台、逐步成为越来越多用户的消费指南&#xff0c;同时也变成众多品牌的营销基地。在小红书运营矩阵账号可以很好的树立品牌形象、增加粉丝粘性、节约广告成本&#xff0c;那么在搭建矩阵的过程中如何管理品牌矩阵号也成为众多品牌必须要思考的…

3.操作系统

文章目录 1.操作系统概述&#xff08;1&#xff09;当前操作系统的主要类型&#xff08;2&#xff09;操作系统的特点&#xff08;3&#xff09;五种主要的功能&#xff08;4&#xff09;考点分布 2.进程&#xff08;1&#xff09;进程的状态&#xff08;2&#xff09;进程的定…

jeecg低代码主从表打印

1.在在线开发菜单栏中选择online表单开发&#xff0c;新建两张表&#xff0c;分别为主表和附表。 2.首页进入报表设计——积木报表设计。 3.进入报表管理——打印设计&#xff0c;选择一个模板或者新建都可以。 4.进入设计页面&#xff0c;点击数据集管理右边的添加数据表&a…

高通开发系列 - 驱动模块Oops后如何找到出错位置

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 目录 问题概述问题现象出错定位问题概述 加载驱动模块时发生:Kernel panic - not syncing: Fatal exception 那么如何找到驱动模块出错的…

抖音AI绘画变成真人软件

抖音AI绘画成人软件的发展可能包括以下几个方面&#xff1a; 算法优化&#xff1a;随着深度学习算法的不断发展&#xff0c;未来该技术可能会通过改进模型架构、优化训练方式等手段&#xff0c;提高生成图像的质量和自然度。 多样化的绘画风格&#xff1a;为了满足用户…

【软考备战·希赛网每日一练】2023年5月12日

文章目录 一、今日成绩二、错题总结第一题第二题第三题第四题 三、知识查缺 题目及解析来源&#xff1a;2023年05月12日软件设计师每日一练 一、今日成绩 二、错题总结 第一题 解析&#xff1a; 一般情况下&#xff0c;一旦Web服务器向浏览器发送了请求数据&#xff0c;它就要…

2021 第十二届蓝桥杯大赛软件赛决赛, 国赛,C/C++ 大学B组题解

2021 第十二届蓝桥杯大赛软件赛决赛, 国赛&#xff0c;C/C 大学B组题解 文章目录 第1题 —— 带宽 &#xff08;5分&#xff09;第2题 —— 纯质数 &#xff08;5分&#xff09;第3题 —— 完全日期 &#xff08;10分&#xff09;第4题 —— 最小权值 &#xff08;10分&#xf…

MySQL之快速查询的秘籍 【B+树索引】

前言 本文章收录在MySQL性能优化原理实战专栏&#xff0c;点击此处查看更多优质内容。 本文摘录自 ▪ 小孩子4919《MySQL是怎样运行的&#xff1a;从根儿上理解MySQL》 &#x1f604;学完前面我们讲解了InnoDB数据页的7个组成部分&#xff0c;知道了各个数据页可以组成一个双…

Linux 多线程(3)多线程应用、信号量、线程池、单例模式

应用 生产者与消费者模型 生产者与消费者模型---设计模式的一种 设计模式--程序员针对一些典型的应用场景所给出的一种典型的解决方案 应用场景--在有大量数据任务产生的同时需要进行任务处理的场景 如果采用单执行流解决&#xff1a; 效率低下 资源利用不一定合理&#xff08;…

【Python数据分析】常用内置函数(一)

&#x1f64b;‍ 哈喽大家好&#xff0c;本次是python数据分析、挖掘与可视化专栏第四期 ⭐本期内容&#xff1a;常用内置函数 &#x1f3c6;系列专栏&#xff1a;Python数据分析、挖掘与可视化 &#x1f44d;“总有一段时光悄悄过去然后永远怀念.” 文章目录 前言类型转换int(…

Vue---列表渲染

目录 一、列表渲染的基本使用 &#xff08;1&#xff09;渲染数组数据 &#xff08;2&#xff09;渲染对象数据 二、v-for指令的高级用法 三、列表过滤 四、列表排序 一、列表渲染的基本使用 使用v-for指令可以将数组&#xff0c;对象数据渲染成列表视图 &#xff08;1&a…

前端自学好还是培训好?女生有多适合学前端,我来告诉你!

2023年了&#xff0c;你是否还在迷茫或者每个月拿着5/6k做着卷死的工作&#xff0c;不但存不下钱还不能好好享受生活&#xff0c;如果是&#xff0c;那你真该考虑一下转行了。 好程序员先说说前端到底怎么开始学&#xff1a; 有的伙伴说今年28岁了&#xff0c;学的会计&#xf…

Vue中的MVVM【第三篇】

大纲&#xff1a; MVVM图示 &#x1f308; 一、MVVM简介 简单来说&#xff1a;MVVM&#xff08;M-VM-M&#xff09;&#xff0c;一种更好的UI模式解决方案&#xff0c;MVVM通过数据双向绑定让数据自动地双向同步。 M(Model)&#xff1a;Model数据模型&#xff0c;json格式数据…