当上方或下方有文本时使用 bash 移动行

当上方或下方有文本时使用 bash 移动行

我有一个file.txt看起来像这样:

foo
bar
foo
bar

我希望它看起来像:

foobar
foobar

foobar始终是“主要”行和“次要”行的开头。

我最接近的一次是这样的:

sed -n '1{h;n;G};p' file.txt

但是此命令只是改变了顺序,所以我得到的不是所需的输出,而是:

bar
foo
foo
bar

任何想法?

答案1

以下适用于您的示例:

sed -n '/foo/{N;s/\n//p}'

这将找到foo,读取下一行,然后删除它们之间的换行符。

根据您的具体情况,您可能希望使用以下方式来锚定匹配:

sed -n '/^foo$/{N;s/\n//p}'.

一些高级功能sed可能相当令人望而生畏,但是一个很好的参考。

相关内容