sed,用该行的第一部分替换全局分隔符

2024-01-08

可以说我有以下几行:



1:a:b:c
2:d:e:f
3:a:b
4:a:b:c:d:e:f
  

我如何使用 sed (或 perl)编辑它以便阅读:



1a1b1c
2d2e2f
3a3b
4a4b4c4d4e4f
  

我已经用 awk 完成了这样的操作:



awk -F':' '{gsub(/:/, $1, $0); print $0}'
  

但需要很长时间才能完成!所以寻找更快的东西。


这有点棘手,但可以通过sed(假设文件data包含示例输入):

$ sed '/^\(.\):/{
s//\1/
: retry
s/^\(.\)\([^:]*\):/\1\2\1/
t retry
}' data
1a1b1c
2d2e2f
3a3b
4a4b4c4d4e4f
$

您可以使用分号将脚本扁平化为一行;sed在MacOS X上有时有点暴躁并且反对某些部分,所以它被分成6行。第一行匹配以单个字符和冒号开头的行,并在识别时启动一系列操作。例如,第一个替换仅将“1:”替换为“1”。这: retry也是分支的标签 - 这是其中的关键部分。下一个替换将行上的第一个字符复制到第一个冒号上。这t retry如果替代品改变了任何内容,则返回标签。最后一行界定了最初匹配行的整个操作序列。

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

sed,用该行的第一部分替换全局分隔符 的相关文章

  • Perl 导入到我的所有包中?

    我倾向于经常使用 Data Dumper 最终我的 pl 代码中每个包的顶部都有以下样板 use strict use warnings use Data Dumper Data Dumper Deparse 1 Data Dumper P
  • 读入模板文件,使用用户输入填充并生成新文件

    我正在尝试读取如下所示的模板配置文件 template config path to speedseq package binary directory SPEEDSEQ BIN DIR usr local packages Sequenc
  • Perl 是否有相当于 Python 的 `if __name__ == '__main__'` 的功能?

    有没有一种方法可以确定当前文件是否是 Perl 源中正在执行的文件 在 Python 中 我们使用以下结构来做到这一点 if name main This file is being executed raise NotImplemente
  • 如何在 perl 中合并两个数组,交替每个数组中的值

    假设我有 2 个如下所示的数组 a1 Vinay Raj harry b1 dude rock 合并后我想要这样的结果 Vinay dude Vinay rock Raj dude Raj rock harry dude harry roc
  • Perl 的反引号、system 和 exec 有什么区别?

    有人可以帮帮我吗 在 Perl 中 以下之间有什么区别 exec command and system command and print command 还有其他方法可以运行 shell 命令吗 exec 执行命令并一去不复返 这就像一个
  • 如何将 Perl 转换为 C?

    有没有可用的工具可以将 Perl 源代码转换为 C 源代码 什么平台都可以 对此的规范答案是MJD 的 为什么不将 Perl 翻译成 C http www perl com pub a 2001 06 27 ctoperl html
  • 如何使用 Perl CGI 脚本提供图像?

    我的 Google fu 让我失望了 如何使用 Perl 提供已生成的图像 Example img src getimage pl getimage pl 里有什么 干得好 usr bin perl w my file inner nav
  • 如何对 Data::Dumper 的输出进行排序?

    我想转储对象和散列的值 但它总是乱序打印键 如何按 递归 排序顺序转储键 use Data Dumper print Dumper obj Set Data Dumper Sortkeys 1获取 Perl 的默认排序顺序 如果要自定义顺序
  • 如何将会话管理添加到简单的 Perl CGI 网页?

    我有一个简单的网页 到目前为止不需要任何登录 它是用 Perl CGI 编程的 我想知道添加会话支持以便获得登录信息的步骤 我不需要非常复杂的方法 因为网页非常简单 另外 我想要一些关于支持 Perl 会话所需的技术 库的建议 我在很多很多
  • 使用 sed 更新 xml 属性(Windows + cygwin 和 Linux)?

    我需要使用 sed 命令对 xml 文件进行更新 但我在这方面遇到了麻烦 它需要在 Windows 使用 cygwin 和 Linux 上运行 XML 具有以下元素
  • 如何查找所有以句号结尾的单词?

    我有一个包含许多以 a 结尾的单词的文件 其中大部分是缩写 例如 etc p s 如何输出一个仅显示一次所有这些单词的列表 所有单词前面都有一个空格 因此可以使用该空格来查找单词的开头 没有一个单词出现在该行的开头 文件中没有句子 因此句点
  • Text::平衡和多行 xml

    看来我有点失落了 我需要解析一个大的 大约 100 mb 且相当难看的 xml 文件 如果我使用parsefile 它返回错误 文档元素后的垃圾 但它会很乐意解析文件的较小元素 所以我决定将文件分解为元素并解析它们 由于不鼓励使用正则表达式
  • 对重复的名称添加双引号

    我想从文件中找到重复的名称 如下所示 并用 标记它们 file James Miki 123 456 7890 Wang Tai 234 563 6879 James Miki 123 456 7890 输出希望看起来像 James Mik
  • 折叠具有多个字段的行

    我有这个代码 awk seen 1 2 a 1 a 1 a 1 t 2 END for i in a print i a i inputfile 我想折叠具有两个以上字段的行 但始终基于第一个字段作为索引 输入文件 三列制表符分隔 prot
  • 如何将 NTLM 身份验证与 Perl 的 SOAP::Lite 模块集成?

    此 Perl 代码适用于对 ASP NET Web 服务的匿名访问 但当打开集成安全性时 该服务会返回 401 错误 我认为我需要将 NTLM 模块与 SOAP Lite 结合使用 但尚不清楚如何做到这一点 如何集成这些组件 use SOA
  • 当找到匹配时使用 sed 替换行首

    我有一个 Java 文件 我想注释包含匹配的任何代码行 myvar 我认为 sed 应该在这里帮助我 sed s myVar not sure what to put here g MyFile java 我不知道要输入什么 not sur
  • 打包/解包 - 小端 - 64 位 - 问题

    usr bin env perl use warnings use 5 012 my var 1 lt lt 31 say unpack B pack N var 10000000000000000000000000000000 我怎样才能
  • 无法在 Perl 中找到 DBI.pm 模块

    我使用的是 CentOS 并且已经安装了 Perl 5 20 并且默认情况下存在 Perl 5 10 我正在使用 Perl 5 20 版本来执行 Perl 代码 我尝试使用 DBI 模块并收到此错误 root localhost perl
  • 将 stdin/stdout 从执行进程重定向到 Perl 中的管道

    我试图让执行子进程中的 STDOUT STDERR 通过 Perl 中的管道返回到父进程 我见过的最接近我想做的事情是 http forums devshed com perl programming 6 exec and redirect
  • 如何将查找和替换限制为 CSV 中的一列?

    我有一个 4 列 CSV 文件 例如 0001 fish animal eats worms I use sed对文件进行查找和替换 但我需要将此查找和替换限制为仅在第 3 列中找到的文本 如何让查找和替换仅发生在这一列上 您确定要使用se

随机推荐

  • 基于json输入绘制网络拓扑图

    我想通过证明 json 数据作为输入 使用 Highchart 或任何其他 js 库绘制网络拓扑图 在查看示例时http www highcharts com demo renderer http www highcharts com de
  • 设置滚动条拇指大小

    我正在尝试计算与 WPF 滚动条拇指元素大小相关的算法 拇指元素的大小可以使用Scrollbar ViewportSize属性 但又与Scrollbar Minimum and Scrollbar Maximum价值观 到目前为止我发现的是
  • android 从加速度计读数中删除重力

    我正在开发一个 Android 应用程序 我需要从加速度计读数中消除重力 我已经阅读了关于这个问题的多个讨论 我还找到了一个算法here http developer android com reference android hardwa
  • pandas 中给定日期的季度天数

    我创建了一个日期数据框 如下所示 import pandas as pd timespan 366 df pd DataFrame Date pd date range pd datetime today periods timespan
  • 在 Keras 中实现 Rprop 算法

    我正在尝试为 Keras 实现弹性反向传播优化器 link http www inf fu berlin de lehre WS06 Musterererkennung Paper rprop pdf 但具有挑战性的部分是能够根据每个单独的
  • 何时使用 SortedList 而不是 SortedDictionary

    这可能看起来与此重复question https stackoverflow com questions 935621 whats the difference between sortedlist and sorteddictionary
  • 为结构字段分配默认值[重复]

    这个问题在这里已经有答案了 我想为 Go 中的结构字段分配默认值 我不确定是否可能 但在创建 初始化结构的对象时 如果我没有为该字段分配任何值 我希望它从默认值分配 知道如何实现它吗 type abc struct prop1 int pr
  • 从两个向量中采样唯一对

    给定两个向量 a and b a letters 1 6 b letters 7 11 目标是使用以下方法对两列矩阵进行采样a and b 第一列应包含以下元素a使得每个元素a重复两次 第二列应包含以下元素b使得每个元素b也重复至少两次 还
  • 如何将 pandas 数据框显示为数据表?

    我想显示一个表 这是一个 pandas 数据框 作为数据表 https datatables net examples data sources dom html 在下面的简化示例中 我读取了用户提供的两个数字 它们确定了表格的行号和列号
  • 如何在 CodeIgniter 中获取 show_error() 来加载视图?

    我需要在所有页面中加载头部视图和脚部视图 但show error使用自己的完整模板 它在加载此模板后停止执行 因此如果我愿意 页脚甚至不会加载 我应该重写这个方法还是有其他方法 所以 我就是这样做的 而且效果非常好 我延长了CI Excep
  • 为什么元胞数组中的尾随逗号是有效的 Matlab 语法?

    今天我很惊讶地发现 A 1 2 3 and B 1 2 3 都是 MATLAB 中的有效语法 我原以为第二个语句会产生错误 据我所知 它们产生相同的单元阵列 all A B 返回真 允许使用第二种语法有什么原因吗 这是解析器中的错误吗 是A
  • ggplot 抛出错误“找不到标签”,而“标签”显然在那里

    我可以绘制以下标签df using geom text df lt data frame x c 610 426 569 253 y c 226 276 364 185 label c accomplishments per week ho
  • private(set) 与 let 属性 - 'private(set)' 修饰符不能应用于只读属性

    我已经知道如何private set 作品 但下面的代码给出了编译时错误 class Person private set let name String Error private set let age Int Error init n
  • android 调试器不会在断点处停止

    我在控制台中看到调试语句 但调试器不会在任何断点处停止 我尝试清除所有断点并将它们添加回来 不确定这是如何发生的 但确实如此 对我有用的解决方案 Simply 卸载应用程序从设备 在设备上手动 并再次尝试调试
  • android 的 coredata 相当于什么

    我曾经为 iPhone 编程 但后来我想在 Android 中制作另一个类似的程序 那么 我应该使用类似 coredata 的框架吗 安卓有类似的东西吗 实际上你需要的是检查 Android 的 ORM 工具的持久性 并决定哪一个最适合你
  • 如何从安装程序获取路径以及如何在我的应用程序中设置?

    我正在编写一个 win 应用程序 现在我想为我的应用程序进行设置 我的代码是 Microsoft Win32 RegistryKey rk Microsoft Win32 Registry LocalMachine OpenSubKey S
  • 从 SwiftUI 按钮调用评估Javascript

    假设您有以下 WKWebView 实现 import Combine import SwiftUI import WebKit class WebViewData ObservableObject Published var parsedT
  • 如何在 Python 中对多元对数正态分布进行采样?

    使用 Python 如何从多元对数正态分布中采样数据 例如 对于多元正态分布 有两个选项 假设我们有一个 3 x 3 协方差矩阵和一个 3 维均值向量 mu Method 1 sample np random multivariate no
  • Internet Explorer 中的鼠标移动问题

    当事件目标位于鼠标上方时 Internet Explorer 不会触发 onmousemove 事件 img 元素 缺乏背景 但当目标有背景时 它确实会注册事件 有人对此有解释吗 我在 IE10 IE9 和 IE8 中也有同样的行为 在这里
  • sed,用该行的第一部分替换全局分隔符

    可以说我有以下几行 1 a b c 2 d e f 3 a b 4 a b c d e f 我如何使用 sed 或 perl 编辑它以便阅读 1a1b1c 2d2e2f 3a3b 4a4b4c4d4e4f 我已经用 awk 完成了这样的操作