批量文本文件内容替换之Linux sed命令

2023-11-11

sed命令简介

Linux sed命令可以使用shell脚本进行文件的批量处理,如批量替换、修改等等,尤其是在需要对大量文本文件进行批量操作时,使用sed命令会起到事半功倍的效果。关于详细语法介绍,请参考菜鸟教程Linux sed命令

需求

现在需要对特定目录下的某个xml文件进行指定内容替换操作,目录下的内容如下:

每个DAFront_目录下都有一个cfg/.xml文件,文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<Root>
  <TCPServer>
    <LocalIP>192.168.122.141</LocalIP>
    <LocalPort>1001</LocalPort>
    <AllowIP>0.0.0.0</AllowIP>
    <AllowConnectNum>10</AllowConnectNum>
  </TCPServer>
  <TCPClient>
    <RemoteIP>192.168.122.141</RemoteIP>
    <RemotePort>1002</RemotePort>
    <ControlAckPort>8801</ControlAckPort>
    <SendToIsolation>0</SendToIsolation>
    <SendPackSize>5120</SendPackSize>
    <UseZipData>0</UseZipData>
  </TCPClient>
  <MultiCastSender>
<LocalIP>0.0.0.0</LocalIP>
    <MultiCastPort>1003</MultiCastPort>
    <MultiCastIP>224.1.1.15</MultiCastIP>
  </MultiCastSender>
  <UDPCastSender>
    <UdpCastIP>192.168.122.141</UdpCastIP>
    <UdpCastPort>8804</UdpCastPort>
    <SendPackSize>4096</SendPackSize>
    <UseZipData>1</UseZipData>
  </UDPCastSender>
  <MultiCastRecv>
    <LocalIP>192.168.122.141</LocalIP>
    <MultiCastPort>9000</MultiCastPort>
    <MultiCastIP>224.1.1.25</MultiCastIP>
  </MultiCastRecv>
</Root>

现在要批量修改LocalIP的值(第18行),少量文件我们可以手动修改。但大量文件时,相信没有人会用这种笨方法一个一个改。于是,sed命令就显示出它的强大之处。只需要几行shell代码,就可以轻松实现批量替换功能。

sed实现批量替换

#!/bin/sh

Dirs=`ls /opt/goldwind`
#匹配目标文件夹
str="DAFront_"
n=0
for curdir in $Dirs
do
result=$(echo $curdir | grep $str)
if [[ $result != ""  ]];then
#批量替换第18行的内容,sed的动作有a(新增)、c(取代)、d(删除)、i(插入)、s(取代)...
#详细参数参考文章开头菜鸟教程Linux sed命令
#sed -i '18,18c <LocalIP>127.0.0.1</LocalIP>'是用<LocalIP>127.0.0.1</LocalIP>替换第18行的内容
sed -i '18,18c <LocalIP>127.0.0.1</LocalIP>' ${curdir}/cfg/fa_typ.xml
let n+=1;
fi
done
echo "total files in /opt/goldwind is `ls -l /opt/goldwind | wc -l`"
echo "=======目标文件夹共有${n},全部替换完成=========="

sed的用法不止于此,它尤其擅长自动编辑一个或多个文件、简化对文件的反复操作,随着对它的进一步了解,相信你也会爱上这个命令的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

批量文本文件内容替换之Linux sed命令 的相关文章

  • Linux中如何避免sleep调用因信号而中断?

    我在 Linux 中使用实时信号来通知串行端口中新数据的到达 不幸的是 这会导致睡眠呼叫在有信号时被中断 有人知道避免这种行为的方法吗 我尝试使用常规信号 SIGUSR1 但我不断得到相同的行为 来自 nanosleep 联机帮助页 nan
  • 在Java中执行.lnk文件

    我需要在java中执行 lnk文件 指向exe文件的lnk文件 我能怎么做 在 VB net 中我做 Process Start path 它有效 谢谢你的帮助 Use a 流程构建器 http download oracle com ja
  • 如何获取与 shell 中的文件名模式匹配的所有文件的总文件大小?

    我正在尝试仅使用 shell 来计算与文件名模式匹配的所有文件 在目录树中 的总大小 以字节为单位 这是我到目前为止所拥有的 find name undo exec stat c s awk 总计 1 END 打印总计 有没有更简单的方法来
  • 在本地主机上使用相同的 IP 和端口创建套接字

    我在 Linux 上看到奇怪的行为 我看到远程端和本地端都显示相同的 IP 和端口组合 以下是 netstat 输出 netstat anp 网络统计grep 6102 tcp 0 0 139 185 44 123 61020 0 0 0
  • 在 scapy 中通过物理环回发送数据包

    我最近发现了 Scapy 它看起来很棒 我正在尝试查看 NIC 上物理环回模块 存根上的简单流量 但是 Scapy sniff 没有给出任何结果 我正在做的发送数据包是 payload data 10 snf sniff filter ic
  • 如何从 Bash 命令行在后台 Vim 打开另一个文件?

    我正在从使用 Gvim 过渡到使用控制台 Vim 我在 Vim 中打开一个文件 然后暂停 Vim 在命令行上运行一些命令 然后想返回到 Vim Ctrl Z 在正常模式下 暂停 Vim 并返回到控制台 fg可用于将焦点返回到 Vim job
  • system 和 shell_exec 之间的区别

    有什么区别shell exec and systemPHP 中的方法 两者都采用单个命令行参数并在 PHP 中运行 使用其中一种比另一种更好吗 请参阅此处的解释 http chipmunkninja com Program Executio
  • 退出代码大于 255 — 可能吗?

    如果是 在哪个操作系统 shell 或其他操作系统上 考虑以下 Java 程序 我使用 Java 只是作为示例 任何语言都适合这个问题 这更多地与操作系统有关 public class ExitCode public static void
  • 在 x86 汇编语言中获取文件大小的简单方法

    假设我已经在汇编中打开了一个文件 并且在寄存器 eax 中有该文件的文件句柄 我将如何获取文件的大小 以便为其分配足够的缓冲区空间 我在这里研究了另一个讨论 建议使用sys fstat 28 系统调用来获取文件统计信息但无法实现它 My a
  • unix 下日期字段排序

    我有包含数十万条记录的文本文件 其中一个字段是日期字段 有没有办法根据日期字段对文件进行排序 09 APR 12 04 08 43 632279000 AM 19 MAR 12 03 53 38 189606000 PM 19 MAR 12
  • 为 Linux 编译 Objective-C 应用程序(API 覆盖范围)

    我可能在这里问一些奇怪的问题 但我不确定从哪里开始 问题是我正在考虑使用 Obj C 和 Foundation 类在 Mac 上编写一个命令行工具 但存在一个非常大的风险 那就是我希望能够为不同的 Linux 发行版编译它 以便将来作为服务
  • Linux无法删除文件

    当我找到文件时 我在删除它们时遇到问题 任务 必须找到带有空格的文件并将其删除 我的尝试 rm find L root grep i 但我有错误 rm cannot remove root test No such file or dire
  • 在汇编中使用 printf 会导致管道传输时输出为空,但可以在终端上使用

    无输出 https stackoverflow com questions 54507957 printf call from assembly do not print to stdout即使在终端上 当输出不包含换行符时也有相同的原因
  • 如何在 Linux 上通过 FTP 递归下载文件夹 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案
  • Bash 中所有匹配的^单词^替换^?

    为了澄清 我正在寻找一种方法来执行global搜索并替换先前使用的命令 word replacement 似乎只替换了第一场比赛 有没有一些set我无法选择的选项 尝试这个 echo oneone oneone gs one two Rep
  • awk 在循环中使用时不打印任何内容[重复]

    这个问题在这里已经有答案了 我有一堆使用 file 1 a 1 txt 格式的文件 如下所示 A 1 B 2 C 3 D 4 并使用以下命令添加包含每个文件名称的新列 awk print FILENAME NF t 0 file 1 a 1
  • ioctl 命令的用户权限检查

    我正在实现 char 驱动程序 Linux 并且我的驱动程序中有某些 IOCTL 命令仅需要由 ADMIN 执行 我的问题是如何在 ioctl 命令实现下检查用户权限并限制非特权用户访问 IOCTL 您可以使用bool capable in
  • 在内核代码中查找函数的最佳方法[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我开始浏览内核代码 遇到的一件事是如何跟踪函数调用 结构定义等 有没有一种好的方法可以快速跳转到函数定义并退出 我尝试过 Source N
  • shell中如何分割字符串

    我有一个变量作为 string ABC400p2q4 我怎样才能分开ABC400 and p2q4 我需要将它分成两个变量 结果我得到 echo var1 ABC400 echo var2 p2q4 可以用任何字母字符代替 ABC 可以用任
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win

随机推荐

  • 01黑马数据结构笔记之动态搭建数组(vector)

    01黑马数据结构笔记之动态搭建数组 vector 1 思路 类似STL的容器vector 动态的开辟内存存放数据 内存不够时以两倍增长 提供相应的增 删 查等函数 主要是利用一个结构体来管理数组 记录数组的成员 typedef struct
  • Pandas之DataFrame对象大总结

    一 什么是DataFrame DataFrame是一个表格型的数据结构 它含有一组有序的列 每列可以是不同类型的值 DataFrame既有行索引也有列索引 它可以被看做是由Series组成的字典 共用同一个索引 数据是以二维结构存放的 类似
  • 【ubuntu】Ubuntu中Android SDK下载跟配置

    1 下载SDK SDK下载网址 2 解压下载的压缩包 android sdk tar zxvf android sdk r24 4 1 linux tgz 3 安装32位库 sudo apt get install y libc6 i386
  • Obsidian 0x06:Obsidian 笔记仓库管理

    文章目录 Obsidian 笔记仓库管理 obsidian 文件夹 trash 文件夹 笔记库设置与插件的迁移 Obsidian 笔记仓库管理 可以根据自己的需要创建不同的笔记库 但要注意 不同笔记库之间的双链是无法访问的 你不能从一个笔记
  • FastDFS 介绍及安装部署

    FastDFS 介绍及安装部署 FastDFS 组成 Tracker Server Storage Server FastDFS上传机制 FastDFS使用场景 FastDFS架构 实验环境 部署 FastDFS 安装依赖 安装服务端 配置
  • 摄像头参数 靶面尺寸 像素阵列 像元尺寸 光学结构

    靶面尺寸 Optical Format 图像传感器的尺寸越大 则成像系统的尺寸越大 捕获的光子越多 感光性能越好 信噪比越低 像素阵列 Pixel Array 对景物中明暗细节的分辨能力 像元尺寸 Pixel Size 像元尺寸是指芯片像元
  • 图片下载功能

    GetMapping flag public void getFiles PathVariable String flag HttpServletResponse response OutputStream os 新建一个输出流对象 Str
  • FZ15S五轴加工中心的自动换刀装置设计(论文+CAD图纸+SW三维图+开题报告+任务书+外文翻译)

    摘要 随着我国国民经济迅速发展和国防建设的需要 对高档的数控机床提出了急迫的大量需求 机床是一个国家制造业水平的象征 而代表机床制造业最高境界的是五轴联动数控机床系统 从某种意义上说 反映了一个国家的工业发展水平状况 长期以来 以美国为首的
  • servlet相关知识整理

    servlet相关知识整理 一 sevlet规范 1 servelet规范中 指定 动态资源文件 开发步骤 2 在servelet规范中 指定http服务器调用动态资源文件规则 3 在servelet规范中 指定http服务器管理动态资源文
  • 微信小程序wxml页面中,背景图片直接引用不显示,其他解决方案

    微信小程序wxml页面中 使用background url 引用图片的相对路径 但是不显示应该咋办 var src images index top bg png let src2 wx getFileSystemManager readF
  • crossdomain.xml在weblogic上的部署

    摘要 Flex API的程序访问ArcGIS Server时 经常遇到安全沙箱的问题 crossdomain xml配置文件可以解决这个问题 在tomcat服务器只需要把这个文件放到webapps根目录下 WebLogic的配置要稍微麻烦一
  • pandas 根据某一列的值修改某一列的值

    在做数据分析时 需要根据某一列的值修改另外一列的值 此时就需要使用pd loc 函数 例子 import pandas as pd x2 pd read csv submit csv x2 假如 我要修改id 800000的isDefaul
  • 光条中心提取方法总结(二)

    传统算法见之前的文章 光条中心提取方法总结 一 视觉菜鸟Leonardo的博客 CSDN博客e 二 深度学习方法 利用深度学习来进行光条中心提取是这几年刚兴起的方法 目前可供参考的论文屈指可数 方法从两个途径切入 1 利用深度学习进行光条图
  • 研一Python基础课程第二周课后习题分享(含代码)

    一 问题描述 共计18道 1 问题1 你买了n个苹果 但是很不幸里面混进了一条虫子 如果虫子每x小时吃完一只苹果 然后开始吃下一个 经过y小时后 你还有几个完整的苹果 分别输入n x y三个整型数值 输出结果 2 问题2 分别输入两个时间
  • javascript 实现Base64加密

    想必大家对base64并不陌生吧 在本文将为大家介绍下Js中的base64加密解密过程 感兴趣的朋友不要错过 html view plain copy
  • 关于存储那些事1-----基础篇

    目录 一 SSD 1 简介 1 1 分类 1 1 1 易失性存储器 1 1 2 非易失性存储器 2 SSD接口 2 1 SATA接口 2 2 SATA Express接口 2 3 SAS接口 2 4 U 2接口 2 5 mSATA接口 2
  • 【解决方案】LaTeX插入svg图片

    LaTeX插入svg图片的解决方案 今天在写论文时 想在论文里插入svg图片 遇到了问题 百度了一下方法 发现LaTeX不支持插入svg图片 在捣鼓了一下之后 发现基本的方法不是失效就是比较麻烦 本文简单总结了两个解决方案 发现都不太行 研
  • 系统及服务器巡检流程图,巡检日常工作流程图

    巡检日常工作流程图 由会员分享 可在线阅读 更多相关 巡检日常工作流程图 1页珍藏版 请在人人文库网上搜索 1 质质检检日日常常巡巡检检流流程程图图 查查看看生生产产交交接接半半成成品品或或成成品品 初初步步确确定定生生产产零零件件 准准备
  • Win10下安装mujuco

    1 背景 安装mujuco之前玩的环境都是些简单的 易处理的环境 就是下面这种 第一张图是移动下面的方块保持杆子立起来环境 第二张图是小车爬山环境 第三张图是给杆子施加力使得杆子保持立起来环境 从图也可以看出 是比较简单的环境 而mujuc
  • 批量文本文件内容替换之Linux sed命令

    文章目录 sed命令简介 需求 sed实现批量替换 sed命令简介 Linux sed命令可以使用shell脚本进行文件的批量处理 如批量替换 修改等等 尤其是在需要对大量文本文件进行批量操作时 使用sed命令会起到事半功倍的效果 关于详细