12. sed 替换 增强版

2024-02-10 08:48
文章标签 替换 sed 增强版

本文主要是介绍12. sed 替换 增强版,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原文 https://www.thegeekstuff.com/2009/09/unix-sed-tutorial-replace-text-inside-a-file-using-substitute-command/?utm_source=sitekickr&utm_medium=snip_button

语法

Syntax:#sed 'ADDRESSs/REGEXP/REPLACEMENT/FLAGS' filename
#sed 'PATTERNs/REGEXP/REPLACEMENT/FLAGS' filename

上面的/是delimiter 就是分隔符 在某些情况可以使用其他分隔符 比如 @,^,| 等
这个某些情况比如 要替换// 替换成 -

重点

敲黑板敲黑板!!!

FLAGS can be any of the following

  • g Replace all the instance of REGEXP with REPLACEMENT
    g 替换一行中所有 REGEXP 的实例 默认情况只匹配第一个 过会看实例

  • n Could be any number,replace nth instance of the REGEXP with REPLACEMENT.
    p If substitution was made, then prints the new pattern space.
    只替换第n找到的REGEXP 实例

  • i match REGEXP in a case-insensitive manner. 忽略大小写

  • w file If substitution was made, write out the result to the given file. 将替换好的保存到文件中 记住!!! 只有替换了的 替换了1行 就只存一行 替换了两行就是两行

We can use different delimiters ( one of @ % ; : ) instead of /

但是注意 当使用n 的时候 不能使用g

现在有一个文件

$ cat thegeekstuff.txt
# Instruction Guides
1. Linux Sysadmin, Linux Scripting etc.
2. Databases - Oracle, mySQL etc.
3. Security (Firewall, Network, Online Security etc)
4. Storage in Linux
5. Productivity (Too many technologies to explore, not much time available)
#  Additional FAQS
6. Windows- Sysadmin, reboot etc.

做练习

  1. Substitute Word “Linux” to “Linux-Unix” Using sed s//
$ sed 's/Linux/Linux-Unix/' thegeekstuff.txt

只替换每一行的第一个Linux 变成 Linux-Unix

其余的flag 可以自行测试 :)

补充

我写了下面一个sed 命令

dingmac@modern_php$ sed '/Administration/{ s/Administration/Supervision/;:label ;n;b label; }' theGeekStuff.txt

在MAC 中} 之前一定要记得;

上面的脚本会有报错 报错原因参考如下

https://discussions.apple.com/thread/2098594

sed: 1: "/Administration/{ s/Adm ...": bad flag in substitute command: ':'

原因如下

if you want a shell command line to span multiple lines, then you need to tell the shell that command is not finished when you hit RETURN.

假如在 有shell命令中有跨越多行的命令时 一定要按照下面的写法

sed '{
command1;
command2 # ; 符号可有可无 多个命令一行一定要有
}'

第二点 mac 不支持e 命令 这里是e 命令 不是e参数

#mac
dingmac@modern_php$ echo 'a' | sed 'e date'
sed: 1: "e date": invalid command code e
#Ubuntu
dingmac@ubuntu:~$ echo 'a' | sed  -n 'e date'
Wed Jan 17 11:49:38 CST 2018

这篇关于12. sed 替换 增强版的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/696662

相关文章

C#实现添加/替换/提取或删除Excel中的图片

《C#实现添加/替换/提取或删除Excel中的图片》在Excel中插入与数据相关的图片,能将关键数据或信息以更直观的方式呈现出来,使文档更加美观,下面我们来看看如何在C#中实现添加/替换/提取或删除E... 在Excandroidel中插入与数据相关的图片,能将关键数据或信息以更直观的方式呈现出来,使文档更

Java操作xls替换文本或图片的功能实现

《Java操作xls替换文本或图片的功能实现》这篇文章主要给大家介绍了关于Java操作xls替换文本或图片功能实现的相关资料,文中通过示例代码讲解了文件上传、文件处理和Excel文件生成,需要的朋友可... 目录准备xls模板文件:template.xls准备需要替换的图片和数据功能实现包声明与导入类声明与

notepad++ 正则表达式多条件查找替换

基础语法参考: https://www.cnblogs.com/winstonet/p/10635043.html https://www.linuxidc.com/Linux/2019-05/158701.htm   通常情况下我们查找的内容和要被替换掉的内容是一样的,我们只需要使用正则表达式精确框定查找内容,替换直接输入要替换的内容即可。 但有时会比较复杂,查找的内容,只需要替换其中

shell脚本中变量中字符串替换的测试 /和//的区别

test_char=abbbcbbbf echo "bf:test_char = " $test_char test_char=${test_char/bbb/ddd} echo "af:test_char = " $test_char 输出: bf:test_char =  abbbcbbbf af:test_char =  adddcbbbf 只匹配第一个

springboot启动时替换配置参数

SpringBoot启动时配置参数替换 一.背景 SpringBoot项目启动的时候,在不使用配置中心等的前提下或者有公司强制使用指定的“密码箱”情况下,需要远程获取关键配置信息,比如数据库密码,则需要在项目启动前获取配置并且进行本地配置替换。 二.Demo实现 1.maven依赖 <dependencies><dependency><groupId>org.springframewor

Java中等题-整数替换(力扣)

给定一个正整数 n ,你可以做如下操作: 如果 n 是偶数,则用 n / 2替换 n 。如果 n 是奇数,则可以用 n + 1或n - 1替换 n 。 返回 n 变为 1 所需的 最小替换次数 。 示例 1: 输入:n = 8输出:3解释:8 -> 4 -> 2 -> 1 示例 2: 输入:n = 7输出:4解释:7 -> 8 -> 4 -> 2 -> 1或 7 ->

SpringBoot 集成 SpirePDF 实现文本替换

SpirePDF 10.6.2 很强大,API 也封装的很好,使用的时候及其舒适。但是需要购买许可,不然有很大限制,最大的问题在于会添加水印,这就导致基本上用不了。有钱真好,真是嘴馋。 好在 SpirePDF 也有版本较老的免费版本,有查到一个 5.1.0。接下来附上使用代码 1、在 pom.xml 文件中添加他们的源 <!-- 使用 huawei / aliyun 的 Maven 源,提升

Linux shell编程--sed进阶

一、多行命令 sed编 辑器包含了三个可用来处理多行文本的特殊命令。 N:将数据流中的下一行加进来创建一个多行组(multiline group)来处理。 D:删除多行组中的一行。 P:打印多行组中的一行。 二、next 命令 单行的next命令 小写的n命令会告诉sed编辑器移动到数据流中的下一文本行,而不用重新回到命令的最开始 再执行一遍。通常sed编辑器在移动到数

NIFI汉化_替换logo_二次开发_Idea编译NIFI最新源码_详细过程记录_全解析_Maven编译NIFI避坑指南001

由于需要对NFI进行汉化,以及二次开发,首先要下载源码以后编辑通过,NIFI的源码,项目非常多,编译过程中需要编译超过570个jar包,同时编译过程很慢需要30多分钟. 1.首先下载NIFI源码,根据需要下载对应版本: https://github.com/kemixkoo/orchsym-runtime/   首先介绍一下,这个是一个公司根据nifi进行定制开发的,已经汉化,但是不能商

替换Windows AD时,网络准入场景如何迁移对接国产身份域管?

Windows AD是迄今为止身份管理和访问控制领域的最佳实践,全球约90%的中大型企业采用AD作为底层数字身份基础设施,管理组织、用户、应用、网络、终端等IT资源。但随着信创建设在党政机关、金融、央国企、电力等各行各业铺开,对Windows AD域的替换成为企业信息安全建设中不可避免的议题之一。 鉴于AD在企业中的应用程度不同,可将企业分为轻度、中度及深度三类Windows&nbsp;AD