希望sed对ed的方便的j命令有相当的效果

希望sed对ed的方便的j命令有相当的效果,第1张

概述希望sed对ed的方便的j命令有相当的效果

它一直在窃听我, sed没有像ed命令那样的j命令。

这个问题问如何join一般的行,并有一堆很好的答案,许多特色的其他工具,如awk和perl 。 还有一些sed解决scheme,但是它们都涉及到使用s命令从字面上编辑新行,这是一个解决scheme,由于各种原因,我觉得这是一种混乱。

现在, sed也有一些晦涩难懂的命令,不得不使用“hold”和“pattern”空格,这是我从未想过如何使用的。 我一直假设 – BICBW – 如果我能弄明白如何使用它,那么保留空间就是sed对j命令的回答。

所以我今天的问题 – 这个问题在知识分子和实际问题上是一样的 – 是不是有一个好的,安全的,合理简洁的方法来做相当于

我怎样才能提供标准input,这需要一个文件名?

sed /pat/j

也就是说,对于包含模式pat每一行,将其连接到下一行(即,如果使用了g/pat/j/ ,那么ed也是如此)。

正如我所说,这是一个智力问题。 我知道如何使用其他工具连接行,或者通过使用sed和s命令引用换行符。 但在我看来,应该有更好的办法。

(或者,也许我应该简单地将sed.c拷贝到正确的j命令中。)

sed '/pat/{$!{N;s/n/ /}}'

如果pat匹配并且行不是最后一行,请将以下行添加到此行,然后用空格替换n

参考: 如何使用硒代替一个多行字符串

我知道这是很难吞下,但诚实 – sed是简单的替代个人行和其他任何你应该使用awk。 我发现sed非常有用,几乎每天都在使用它30多年,但是在1970年代中期awk被发明的时候,所有的sed构造都不再是个别行上简单的替换。

$ seq 4 | awk '{printf "%s%s",s,$0; s=ORS} /2/{s=OFS} END{print ""}' 1 2 3 4

如何加入2秒的行数:

$ seq 10 | awk '{printf "%s%s",$0,(NR%2?OFS:ORS)}' 1 2 3 4 5 6 7 8 9 10

尝试修改连接2行的sed脚本来连接5行。 比较简单,明显的awk调整,将数字2更改为数字5 :

$ seq 10 | awk '{printf "%s%s",(NR%5?OFS:ORS)}' 1 2 3 4 5 6 7 8 9 10

上述方法可以适用于所有 *** 作系统的所有 *** 作系统,如果需求发生变化,可以很轻松地进行改进,这是你学习使用awk代替sed的两个非常重要的原因。

总结

以上是内存溢出为你收集整理的希望sed对ed的方便的j命令有相当的效果全部内容,希望文章能够帮你解决希望sed对ed的方便的j命令有相当的效果所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1293338.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-10
下一篇 2022-06-10

发表评论

登录后才能评论

评论列表(0条)

保存