我有一个来自第三方系统的文件,我需要更正一点。即将到来的文件不时在数据中间包含一个新行字符。假设我能找到这条损坏的线路。我需要做的只是删除新的行字符并将该行与上面的行连接起来(这将在我删除新的行字符时发生)。
下面是一个例子:
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是行号,但它不起作用。…或者也许有更好的办法来解决这个问题。请帮忙。
最佳答案
您可以使用sed,利用新行开头的空间
sed -e '{
N
s/\n //
}' data.log
这并不要求您事先知道伪换行符在哪里,但只需要更正一个换行符(因为如果将换行符拆分为3,则不起作用)