文本三剑客—sed命令

sed命令

一、概念

sed是一种流编辑器,一次处理一行内容。

处理方式:一行一行处理,处理完当前行,才会处理下一行,直到文件末尾。

如果只是展示,会放在缓冲区(模式空间),展示结束之后,会从模式空间把操作结果删除。

二、sed的命令格式和操作选项

1、命令格式

sed -e ‘操作符1;操作符2’ 文件1 文件2

sed -e ‘操作符’ -e ‘操作符’ 文件1 文件2

-e 表示可以跟多个操作符,只有一个操作符,-e可以省略

2、操作选项

-e 用于执行多个操作命令

-f 在脚本中定义好了操作符,然后根据脚本内容的操作符对文件进行操作

-i 直接修改目标文件(慎用)

-n 仅显示script处理后的结果(不加-n,sed会有两个输出结果,加了-n之后就会把默认输出屏蔽,仅显示一个结果)

3、sed操作符

p:打印结果

r:使用扩展正则表达式

s:替换,替换字符串

c:替换,替换指定行

y:替换,替换单个字符,多个字符替换必须和替换内容的字符长度保持一致

d:delete 删除,删除行

a:增加,在指定行的下面一行插入内容

i:增加,在指定行的上面一行插入内容

r:在行后增加文本内容

$a:在最后一行插入新的内容

$i:在倒数第二行插入新的内容

$r:读取文本1的内容插入到文本2的最后一行

三、sed操作演示

1、打印功能

1.1 仅显示行号

sed -n '=' 文件

1.2 既显示行号又显示内容

sed -n '=;p' 文件

2、寻址打印

2.1 按照指定行打印

sed -n '行数p' 文本
或者
cat -n 文本| sed -n '行数p'

2.2 打印最后一行

sed -n '$p' 文本

3、行号范围打印

3.1 第几行到第几行

sed -n '行数,行数p' 文本

3.2 第几行和第几行

sed -n '行数p;行数p' 文本

3.3 打印奇数行和偶数行

奇数行 sed -n 'p;n' 文本
偶数行 sed -n 'n;p' 文本
# 这里n的作用跳过一行打印下一行

文本内容进行过滤

sed -n '/过滤内容/p' 文本
sed -n '/o/p' 文本 
# 过滤并打印包含o的行

使用正则表达式对文本内容进行过滤

sed -n '/^过滤内容/p' /etc/passwd
sed -n '/过滤内容$p' /etc/passwd
sed -n '/^root/p' /etc/passwd
# 打印/etc/passed下以root为开头的行sed -n '/bash$p' /etc/passwd
# 打印/etc/passed下以bash为结尾的行

从指定行开始,打印到第一个以bash为结尾的行

sed -n '指定行,/bash$/p' /etc/passwd

使用正则表达式打印出/etc/passwd下,出现两次99:的行

sed -rn '/(99:){2,}/p' /etc/passwd

要么以root为开头,要么以bash为结尾的行

sed -rn '/^root|bash$/p' /etc/passwd

sed的删除操作

sed -n '3d;p' 文本
# 删除第三行,打印剩余行
sed -n '5,$d;p' 文本
# 删除第五行到最后一行,打印剩余行

取反

sed -n '指定行数!;p'
# 除了指定行数,其他全部删除
sed -n '1!d;p' 文本
# 除了第一行,其他的全部删除
sed -n ‘4,6!d;p' test.txt
# 除了第四行到第六行,其他的全部删除
sed -n '4p;6!d;p' test.txt
sed -e '1,3d' -e '5d' -e'7,$d' test.txt
# 除第四行和第六行,其他的全部删除

匹配字符串删除行

sed '/任意内容/d' 文本
# 删除文本中含任意内容的文本sed '/指定内容1/,/指定内容2/d' 文本
# 删除文本中指定内容1到指定内容2的文本
vim test.txt 
#按行插入one、two、three、four、five、six、seven、eight、nine、tensed '/o/d' 文本
# 删除文本中含o的文本内容
sed '/one/,/six/d' 文本
# 删除文本中one到six的文本内容
sed '/o/!d' test
# 除了含o的,其余全部删除

s替换字符串

格式:'s/替换对象/替换内容/'
sed -n 's/替换对象/替换内容/p' /ect/passwd
sed -n 's/root/test/p' /etc/passwd
#替换第一个
sed -n 's/root/test/2p' /etc/passwd
#替换第二个
sed -n 's/root/test/gp' /etc/passwd
#替换全部

在文本内容前的空白处添加内容

sed -n 's/^/添加内容/p' test.txt
vim test.txt 
按行插入one、two、three、four、five、six、seven、eight、nine、ten
在文本的所有内容前的空白处添加#
sed -n 's/^/#/p' test.txt
在文本第四行到第六行前添加#
sed -n '4,6 s/^/#/p' test.txt
在文本第四行和第六行前添加#
sed -n '4s/^/#/p;6s/^/#/p' test.txt

文本首字母转换大小写,符号u&和l&,\转义符

#文本内容 abc
加g,全部变成大写
sed -n 's/[a-z]/\u&/' 文本
Abcsed -n 's/[a-z]/\u&/g' 文本
ABC#文本内容ABC
sed -n 's/[A-Z]/\l&' 文本
aBCsed-n 's/[A-Z]/\l&g'
abc

整行替换

sed '/替换对象/c 替换内容' 文本
sed '/one/c dn zhen de shuai' 文本

替换ip地址

y单字符替换

sed 'y/替换对象/替换内容/' 文本
sed 'y/one/111/' 文本

使用sed命令对字符串和字符的位置进行互换

echo abc | sed -r 's/(a)(b)(c)/\3\2\1/'
cba 
echo 你好中国| sed -r 's/(.)(.)(.)(.)/\3\4\1\2/'
中国你好

sed的主要内容:对文本内容进行增、删、改查

拓展:

1、如何免交互删除文本内容,不删除文件?

方法一:sed -i 'd' 文本
方法二:cat /dev/null > 文件
方法三:echo ' ' > test1.txt 
#方法三为虚假删除,只是把空格输入到文本,实际上并未删除,查看文本内容为空格

2、如何免交互删除空行

grep -v "^$" 文本
cat 文本 | tr -s 文本
sed '/^$/d' 文本

3、替换ip地址

sed 'y/替换对象/替换内容/' 文本
sed 'y/one/111/' 文本

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

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

相关文章

微信公众号 H5授权登录实现(最详细)

一、微信公众号 (一)基础信息 微信授权类型 自己的网站、APP等第三方,要实现接入微信授权登录,有多种方式:微信公众号(网页)、微信小程序、微信开放平台(APP)等等。 【…

面试:关于word2vec的相关知识点Hierarchical Softmax和NegativeSampling

1、为什么需要Hierarchical Softmax和Negative Sampling 从输入层到隐含层需要一个维度为NK的权重矩阵,从隐含层到输出层又需要一个维度为KN的权重矩阵,学习权重可以用反向传播算法实现,每次迭代时将权重沿梯度更优的方向进行一小步更新。但…

100337. 最大化子数组的总成本

Powered by:NEFU AB-IN Link 文章目录 100337. 最大化子数组的总成本题意思路代码 100337. 最大化子数组的总成本 题意 给你一个长度为 n 的整数数组 nums。 子数组 nums[l…r]&#xff08;其中 0 < l < r < n&#xff09;的 成本 定义为&#xff1a; cost(l, r)…

详细解析MATLAB和Simulink中的文件格式:mat, mdl, mexw32, 和 m 文件

matlab 探索MATLAB和Simulink中的文件格式&#xff1a;MAT, MDL, MEXW32, 和 M 文件**MAT 文件 (.mat)****MDL 文件 (.mdl)****MEX 文件 (.mexw32/.mexw64)****M 文件 (.m)****总结** 探索MATLAB和Simulink中的文件格式&#xff1a;MAT, MDL, MEXW32, 和 M 文件 当你开始使用M…

Python 虚拟环境 requirements.txt 文件生成 ;pipenv导出pip安装文件

搜索关键词: Python 虚拟环境Pipenv requirements.txt 文件生成;Pipenv 导出 pip requirements.txt安装文件 本文基于python版本 >3.9 文章内容有效日期2023年01月开始(因为此方法从这个时间开始是完全ok的) 上述为pipenv的演示版本 使用以下命令可精准生成requirement…

【Vue】图片懒加载的实现

封装全局指令img-lazy // 定义懒加载插件 import { useIntersectionObserver } from vueuse/coreexport const lazyPlugin {install (app) {// 懒加载指令逻辑app.directive(img-lazy, {mounted (el, binding) {// el: 指令绑定的那个元素 img// binding: binding.value 指令…

總結電磁學

參考: 陈曦<<电磁学讲义>>http://ithatron.phys.tsinghua.edu.cn/downloads/electricty_and_magnetism.pdf 4 电磁学的实验基础 我们已经回顾了经典物理学的框架。在现代物理学中,人们经常从一些基本的原则(如相对论协变性、对称性等等)出发来建立模型,然后…

Java8 --- Gradle7.4整合IDEA

目录 一、Gradle整合IDEA 1.1、Groovy安装 1.1.1、配置环境变量 ​编辑 1.2、创建项目 ​编辑 1.3、Groovy基本语法 1.3.1、基本语法 1.3.2、引号 1.3.3、语句结构 1.3.4、数据类型 1.3.5、集合操作 1.4、使用Gradle创建普通Java工程 1.5、使用Gradle创建Java ss…

深入理解go语言反射机制

1、前言 每当我们学习一个新的知识点时&#xff0c;一般来说&#xff0c;最关心两件事&#xff0c;一是该知识点的用法&#xff0c;另外就是使用场景。go反射机制作为go语言特性中一个比较高级的功能&#xff0c;我们也需要从上面两个方面去进行学习&#xff0c;前者告诉我们如…

如何在Java中进行网络编程?

如何在Java中进行网络编程&#xff1f; 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们将探讨如何在Java中进行网络编程&#xff0c;这是实现客户端和服…

Vite: 关于静态资源的处理机制

概述 随着前端技术的飞速发展&#xff0c;项目规模和复杂度不断增加&#xff0c;如何高效地处理静态资源成为了提升开发效率和应用性能的关键Vite&#xff0c;作为新一代前端构建工具&#xff0c;以其轻量级、快速启动和热更新著称&#xff0c;同时也为静态资源的管理和优化提…

使用 axios 进行 HTTP 请求

使用 axios 进行 HTTP 请求 文章目录 使用 axios 进行 HTTP 请求1、介绍2、安装和引入3、axios 基本使用4、axios 发送 GET 请求5、axios 发送 POST 请求6、高级使用7、总结 1、介绍 什么是 axios axios 是一个基于 promise 的 HTTP 库&#xff0c;可以用于浏览器和 Node.js 中…

计算机组成入门知识

前言&#x1f440;~ 数据库的知识点先暂且分享到这&#xff0c;接下来开始接触计算机组成以及计算机网络相关的知识点&#xff0c;这一章先介绍一些基础的计算机组成知识 一台计算机如何组成的&#xff1f; 存储器 CPU cpu的工作流程 主频 如何衡量CPU好坏呢&#xff1f…

创意产业如何应对AI的挑战。

最近的一个月&#xff0c;音乐领域迎来了一个革命性的变化。一系列音乐大模型轮番上线&#xff0c;它们以惊人的创作能力&#xff0c;将素人生产音乐的门槛降到了最低。这些AI音乐模型的出现&#xff0c;引发了关于AI是否会彻底颠覆音乐圈的讨论。然而&#xff0c;短暂的兴奋过…

我的常见问题记录

1,maven在idea工具可以正常使用,在命令窗口执行出现问题 代码: E:\test-hello\simple-test>mvn clean compile [INFO] Scanning for projects... [WARNING] [WARNING] Some problems were encountered while building the effective model for org.consola:simple-test:jar…

【从0实现React18】 (三) 初探reconciler 带你初步探寻React的核心逻辑

Reconciler 使React核心逻辑所在的模块&#xff0c;中文名叫协调器&#xff0c;协调(reconciler)就是diff算法的意思 reconciler有什么用&#xff1f; 在前端框架出现之前&#xff0c;通常会使用 jQuery 这样的库来开发页面。jQuery 是一个过程驱动的库&#xff0c;开发者需要…

【windows解压】解压文件名乱码

windows解压&#xff0c;文件名乱码但内容正常。 我也不知道什么时候设置出的问题。。。换了解压工具也没用&#xff0c;后来是这样解决的。 目录 1.环境和工具 2.打开【控制面板】 3.点击【时钟和区域】 4.选择【区域】 5.【管理】中【更改系统区域设置】 6.选择并确定…

算是一些Transformer学习当中的重点内容

一、基础概念 Transformer是一种神经网络结构&#xff0c;由Vaswani等人在2017年的论文Attentions All YouNeed”中提出&#xff0c;用于处理机器翻译、语言建模和文本生成等自然语言处理任务。Transformer同样是encoder-decoder的结构&#xff0c;只不过这里的“encoder”和“…

设计模式——工厂方法模式

文章目录 工厂方法模式简介工厂方法模式的组成部分工厂方法模式的结构Factory和Method的含义工厂方法模式的应用场景工厂方法模式的示例1. 文档生成器2. 数据库连接 工厂方法模式简介 工厂方法模式&#xff08;Factory Method Pattern&#xff09;是一种创建型设计模式&#x…