它一直困扰着我,sed
没有j
命令,就像ed
没有命令一样。
这个问题一般询问如何连接线,并且有很多很好的答案,其中许多具有其他工具,例如awk
和perl
。也有一些sed
解决方案,但它们都涉及使用s
命令从字面上编辑换行符,这是一种解决方案,由于各种原因让我觉得很笨拙。
现在,sed
还有一些与“保持”和“模式”空格有关的晦涩命令,我从来没有弄清楚如何使用。我一直假设 - BICBW - 保留空间是 sed 对j
命令的回答,只要我能弄清楚如何使用它。
所以我今天的问题——这既是一个知识分子问题,也是一个实际问题——是,有没有一种好的、安全、合理简洁的方法来做相当于
sed /pat/j
也就是说,对于包含 pattern 的每一行pat
,将其连接到下一行(也就是说,就像ed
我使用一样g/pat/j/
)。
正如我所说,这在某种程度上是一个智力问题。我知道如何使用其他工具连接行,或者通过在引用的文字换行符上使用sed
和命令。s
但在我看来,应该有更好的方法。
(或者也许我应该只获取一份副本sed.c
并输入正确的j
命令。)