如何删除文件中的新行字符而不影响linux

时间:2016-10-03 14:15:20

标签: linux shell unix sed grep

我在源自外部源的文件中遇到新行字符问题。新行字符影响仅针对特定字段@ data5(如下所示),并且应用程序无法读取格式这个。 试图删除它,但它也删除了行的实际结束。 请告诉我,如何从一行中删除换行符,而不从行尾删除换行符。
数据显示如下

  

_1 || || _2 || data_3 || data_4
data_5              || data_6 || data_7 || data_8 || data_9
            _1 || _2 || data_3 || data_4 || data_5
              || || data_6 || data_7 || data_8 data_9

预期产出:
_1 || _2 || data_3 || data_4 || data_5 || data_6 || data_7 || data_8 || data_9 data_1 || data_2 || data_3 || data_4 || data_5 || data_6 || data_7 || data_8 || data_9

先谢谢

2 个答案:

答案 0 :(得分:1)

另一个awk

$ awk -v RS= '{gsub(/\n\|\|/,"||")}1' file

data_1||data_2||data_3||data_4||data_5||data_6||data_7||data_8||data_9
data_1||data_2||data_3||data_4||data_5||data_6||data_7||data_8||data_9

答案 1 :(得分:0)

您可以使用此awk

awk 'NR%2{printf $0;next}1' yourfile

添加额外的步骤以确保棘手的行具有预期的字段数:

awk 'NR%2&&NF==9{printf $0;next}1' FS='|' yourfile

<强>解释

NR%2{printf $0;next}:避免为偶数行打印回车符,next避免进一步处理。

1:正常打印奇数行。