Bash:如何使用 sed 只替换文件中最后一次出现的位置?

2023-12-28

有一个包含重复注释行的文件,例如:

# ScriptAlias /cgi-bin/ "somepath"
# ScriptAlias /cgi-bin/ "otherpath"

我只想在最后一次出现之后添加一行

# ScriptAlias /cgi-bin/ "somepath"
# ScriptAlias /cgi-bin/ "otherpath"
ScriptAlias /cgi-bin/ "mypath"

为此,我使用以下命令:

sed -i 's:^\(.*ScriptAlias /cgi-bin/.*\):\1 \nScriptAlias /cgi-bin/ "mypath":' file

但这会导致每次出现后添加我的行,例如:

# ScriptAlias /cgi-bin/ "somepath"
ScriptAlias /cgi-bin/ "mypath"
# ScriptAlias /cgi-bin/ "otherpath"
ScriptAlias /cgi-bin/ "mypath"

我如何告诉 sed 仅替换最后一个出现的位置?

EDITED:
如果无法使用 sed 解决它(如评论中所述),请提供达到相同结果的替代方案,谢谢。



EDITED:
重复的行可以分开,并且它们之间可以有其他行,例如

# ScriptAlias /cgi-bin/ "somepath"
# ScriptAlias /cgi-bin/ "otherpath"

# ScriptAlias /cgi-bin/ "another-path"
ScriptAlias /foo/ "just-jump"
# ScriptAlias /cgi-bin/ "that's the last"

Use tac http://man.cx/tac所以你打印你的新行first当你看到这个模式的时候:

tac file | awk '/ScriptAlias/ && ! seen {print "new line"; seen=1} {print}' | tac
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Bash:如何使用 sed 只替换文件中最后一次出现的位置? 的相关文章

  • 使用 sed 删除带有方括号和引号的模式

    如何使用 sed 删除具有此模式的行 resourceNames I tried sed i resourceNames d sa yaml 文件的一部分看起来像这样 apiGroups resources secrets resource
  • 使用 Python 的 Popen 替换 Bash 风格的进程

    在 Bash 中 您可以轻松地将进程的输出重定向到临时文件描述符 并且所有这些都由 bash 自动处理 如下所示 mydaemon config file lt echo autostart True n daemonize True 或者
  • 用字典中的值替换列表中的单词

    我正在尝试创建一个简单的程序 让您输入一个句子 然后将其分割成单个单词 另存为splitline 例如 the man lives in a house 每个单词将与一个字典进行匹配 该字典包含针对以下值存储的多个单词 mydict the
  • sed:替换文本块

    我有一堆文件 从一段代码开始 我试图用另一个代码块替换 Replace
  • 简单的awk命令问题(FS、OFS相关)

    我尝试重新组织包含以下内容的文件的格式 gt Humanl chr16 86430087 86430726 element 1 positive gt Humanl chr16 85620095 85621736 element 2 neg
  • 如何在unix中对ls输出进行编号?

    我正在尝试编写一个格式为 id file absolute path 的文件 该文件基本上递归地列出文件夹中的所有文件 并为每个文件提供一个标识符 如 1 2 3 4 我可以使用以下命令递归地获取文件的绝对路径 ls d 1 PWD 但是
  • $@ 中 args 的 bash 参数大小写

    我有一个带有一长串可选参数的脚本 有些具有相关的值 Such as script first 2012 12 25 last 2012 12 26 copy remove script first 2012 12 25 因此有以下案例陈述
  • C - printf("\a") 不会发出警报[重复]

    这个问题在这里已经有答案了 这是我的 C 代码 include
  • 替换VBA中的变量字符串

    我需要替换字符串中的某些内容 但替换的内容可能会有所不同 有可能 XY test XXxY test XXyyXx TEST yXyy Test 以及几乎任何其他空格和上述情况的组合 我需要替换 test 部分并保留 XXX 所以 当使用简
  • sed:用匹配的模式替换第 n 个单词?

    我有一个具有以下特征的文本文件 每行至少有三个由空格分隔的 单词 单词 可以是任何字符或字符串 我在一些行中附加了一些注释 并提出了对原始单词进行更改的初步建议 现在想使用 sed 为我进行这些更改 因此 为了提供更清晰的图片 我的文件如下
  • python中的多服务器监控/自动重启

    我有 2 个服务器程序 必须使用 GNU Screen 启动 我想使用基于 Python 的程序来强化这些服务器 防止崩溃 该程序启动每个屏幕会话 然后监视服务器进程 如果服务器进程崩溃 我需要 python 代码来终止无关的屏幕会话并再次
  • 将匹配的值传递给函数,并替换为返回值

    我如何让 Bash 匹配正则表达式 而不是用常量字符串替换值 而是将匹配的值传递给函数 然后从函数的返回值中获取要替换的值 像下面的伪代码一样 它替换了每一个匹配项 a d 具有相同的字符 但大写 function uppercase ec
  • sed:用下划线替换引号内的空格

    我有输入 例如 来自ifconfig run0 scan在 OpenBSD 上 它有一些用空格分隔的字段 但某些字段本身包含空格 幸运的是 包含空格的此类字段总是用引号引起来 我需要区分引号内的空格和分隔符空格 这个想法是用下划线替换引号内
  • C# 中的高级替换

    我喜欢用 C 替换 xml 字符串 中的一些属性 示例 XML
  • 替换为 NA

    我有一个包含条目的数据框 看来这些值没有被视为 NA 因为 is na 返回 FALSE 我想将这些值转换为 NA 但找不到方法 Use dfr dfr
  • 如何在多行而不是单行输出上打印 Linux 组名称

    我尝试过 getent group 命令 id Gn user 和一些 sed 组合 但我认为我无法实现 因此向其他程序员伸出援手 我希望能够打印此 groups abc123输出 abc123 devops 构建测试设计 预期输出 gro
  • Bash IF:多个条件

    我已经尝试让这件事工作几个小时 但我无法让它工作 if P SFTP a PORT 22 P FTPS PORT 990 a PORT 21 then 有人能帮我吗 我知道多个条件可以这样写 if P SFTP PORT 22 then 但
  • 使用环境变量将参数传递给命令

    我正在尝试编写一个 bash 脚本 该脚本采用环境变量并将其传递给命令 所以如果我有类似的东西 export OUT a arg1 b arg2 0 arg2 1 我想在我的 bash 脚本中执行以下操作
  • 使用sed插入文件内容

    我试图在给定模式之前插入文件内容 这是我的代码 sed i pattern i r scriptPath adapters default permissions xml manifestFile 它添加路径而不是文件的内容 有任何想法吗
  • 疯狂的 crond 行为。不断使 bash 进程失效

    我有一个看起来像这样的 crontab SHELL bin bash PATH sbin bin usr sbin usr bin MAILTO root HOME 0 59 var www html private fivemin zda

随机推荐

  • 显示 (head .unit ) = Agda 中的 head

    我试图证明 Agda 中的一个简单引理 我认为这是正确的 如果向量有两个以上元素 则取其head继采取init与取其相同head立即地 我将其表述如下 lem headInit l xs Vec suc suc l gt head init
  • 在 Doctrine 中,如何忽略更新架构命令中的特定列?

    我有我的映射实体 named Product 只有两列 id and name 如果我手动添加另一列 即stock qty直接使用SQL语句 架构更新工具将远程它 当然 如何防止 Doctrine 删除我的自定义列 而不是映射到我的实体 相
  • 如何在 HTTP 查询字符串中发送 NULL?

    我正在开发一个 API 它可以接受主要三种数据类型作为查询字符串参数的值 boolean string numeric integer or float 默认情况下 所有内容都以字符串检索 我认为没有办法解决这个问题 但参数配置了类型 以便
  • 拥有大量小方法是否有助于 JIT 编译器优化?

    在最近关于如何优化某些代码的讨论中 我被告知将代码分解为许多小方法可以显着提高性能 因为 JIT 编译器不喜欢优化大型方法 我对此不确定 因为似乎 JIT 编译器本身应该能够识别独立的代码段 无论它们是否在自己的方法中 谁能证实或反驳这一说
  • 检查 NSDictionary 中是否存在键

    我如何检查它是否存在 dataArray objectAtIndex indexPathSet row valueForKey SetEntries 我想知道这个密钥是否存在 我怎样才能做到这一点 非常感谢 编辑 dataArray 中有对
  • 如何使 ttk.Scale 表现得更像 tk.Scale?

    Ttk 版本中还存在一些 Tk 小部件 通常它们具有相同的一般行为 但使用 样式 和 主题 而不是每个实例的外观属性 例如bg ETC 这很好 因为 Ttk 小部件默认采用操作系统窗口管理器的 标准外观 无需配置任何有关外观的内容 然而 由
  • 完美的makefile

    我想用make http en wikipedia org wiki Make 28software 29结合获得模块化构建持续集成 http en wikipedia org wiki Continuous integration 自动单
  • 为什么不需要资格?

    好的 我将发布完整的程序 即使它有无关的内容并且有问题的代码是死代码 include
  • 如何在 .NET 中查找串行端口设备及其驱动程序名称?

    我有一个通过串口连接到计算机的设备 我知道在 NET中打开端口我可以通过COM号调用该端口 例如 SerialPort s new SerialPort COM9 s Open 调用 COM9 上的设备 但是 如果我在另一台计算机上运行我的
  • SQL Server 中的 mysql 'SHOW PROCESSLIST' 相当于什么?

    我们正在转换为SQL Server from MySQL 我试图弄清楚为什么要打电话给sqsh没有回来 我怀疑有一些我不知道的锁 您如何了解正在发生的情况 最好通过数据库连接 您可以查看 sp who 和 sp who2 以查看它们是否为您
  • SBT 中的子项目依赖关系

    我在 SBT 子项目上遇到了一个奇怪的问题 我认为这与依赖关系有关 这是我的设置 我有一个 SBT 项目 有两个子项目 A 和 B A 包含一个类和伴生对象MyA B 取决于 A B 包含一个对象MyB其中有一个主要方法 当我尝试执行时My
  • 尝试构建一个简单的 C# 应用程序来控制我的音量混合器[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想做的就是构建一个简单的应用程序来控制我的音量混合器 我更喜欢使用 c 但我的印象是它是一种太高级的语言 无法做这样的事情 我正在寻
  • 尝试 WSO2 IoT 3.3.0 android 注册时如何修复错误“注册失败”?

    我在虚拟机中设置了一个新的服务器 Windows 2012R2 下载最新的active mq和Apache ant 使用Oracle JDK 8u192 安装和设置 WSO2 IoT 应用程序后 我无法注册 Android 设备 我按照 3
  • c# 递归反射和通用列表设置默认属性

    我正在尝试使用反射来实现以下目标 我需要一个传入对象的方法 该方法将使用子对象递归实例化该对象 并使用默认值设置属性 我需要将整个对象实例化为所需的多个级别 此方法需要能够处理具有多个属性的对象 这些属性将是其他对象的通用列表 这是我的示例
  • Redshift:创建一个带有默认为 Now() 的时间戳列的表

    有没有办法创建一个时间戳列默认为现在的表 以下任一操作在创建时成功 但在插入时失败 CREATE TABLE MyTable device id VARCHAR 64 NOT NULL encode lzo app id VARCHAR 1
  • Django 如何在不刷新或重新加载页面的情况下插入数据

    在用户插入数据后 django 如何返回当前页面 request post 设想 如果老师插入学生的成绩 当前页面将重新加载或刷新 我不知道是否可以通过使用重定向来实现它 def grades request V insert data S
  • document.getElementById.style.backgroundImage 不起作用

    我想根据页面的地址为 div 分配不同的背景图像 例如 如果我的 url 是http www mywebsite com mysubdirectory http www mywebsite com mysubdirectory 我使用以下代
  • 我收到错误:“MetaMask - RPC 错误:错误:错误:[ethjs-rpc] rpc 负载错误”

    我通过 JavaScript 发送交易 Metamask 打开传输对话框 我确定 我在元掩码中收到错误消息 inpage js 1 MetaMask RPC 错误 错误 错误 ethjs rpc 有效负载的 rpc 错误 id 380169
  • 代码高尔夫:有限状态机!

    Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 有限状态机 确定性有限状态机是一种简单的计算模型 在计算机科学基础课程中广泛用作自动机理论的介
  • Bash:如何使用 sed 只替换文件中最后一次出现的位置?

    有一个包含重复注释行的文件 例如 ScriptAlias cgi bin somepath ScriptAlias cgi bin otherpath 我只想在最后一次出现之后添加一行 ScriptAlias cgi bin somepat