linux - 在 bash 的特定行中删除换行符(将两行合并为一行)

标签 linux bash sed

我有一个来自第 3 方系统的文件,我需要更正一下。有时即将到来的文件在数据中间包含一个换行符。假设我能够找到这条损坏的线路。我需要做的只是删除换行符并将该行与上面的行连接起来(这将在我摆脱换行符时发生)。 这是示例:

data_1 data_2 data_3 data_4 data_5
data_1 data_2 data_3 data_4 data_5
data_1 data_2 
 data_3 data_4 data_5
data_1 data_2 data_3 data_4 data_5
data_1 data_2 data_3 data_4 data_5
data_1 data_2 data_3 data_4 data_5

如您所见,第 3 行是错误的,需要通过删除换行符来修复/与第 4 行合并。 我有一个简单的脚本,可以找到“错误”(太短)的行。 问题是:如何从特定行中删除换行符(我有一个错误的行号)。

我尝试使用 sed (sed ':a;N;$!ba;3s/\n//' data.log),其中 s 之前的 3 是 a行号,但它不起作用。

... 或者这个问题可能有更好的解决方案。请帮忙。

最佳答案

您可以使用 sed 来做到这一点,利用新行开头的空间

sed -e '{
N
s/\n //
}' data.log

这不需要您提前知道虚假换行符的位置,但只会更正一个中断(因为如果该行被分成 3 行,它就不起作用)

关于linux - 在 bash 的特定行中删除换行符(将两行合并为一行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14281513/

相关文章:

sed在找不到字符串时用警告替换字符串

linux - 无法让 Tomcat 在 Google GCP 实例上运行

linux - BASH Base64 编码脚本编码不正确

linux - 如何删除特定模式后的行并提取某些内容

regex - 如何在 Linux 中将正则表达式传递给 find 命令?

用于使用可选文本快速提交的 Git 别名

bash/sed/awk 从文本文件中删除或 gsub 时间戳模式

linux - 如何在 Shell 脚本中传递超过 10 个参数

linux - 如何抑制/重定向 grep 背景错误?

Python - 制作脚本来操作 Windows 文件路径但在 Linux 上运行