如何删除某个文本中的特殊换行

如何删除某个文本中的特殊换行

首先通过排序统计获取换行的字段s和一条正常数据的列数n

awk -F '|' '{print NF}}' abc.txt|sort -n | uniq -c

其中“|”为分隔符,“abc.txt”为存在换行的文件,NF为该条数据的列数.
例:
输出结果
其中第二列为列数n,第一列为对应列数的总计数量。
由上述结果可以看出:一条正常数据有6个字段,2+5-1=6,因此,部分数据第2个字段存在换行。

下面通过4种方式处理异常换行:

1、通过导入表中,再处理导出的方式进行处理:
先把加载到一个表中,再用replace导出文件。

replace(replace(aa1."换行的字段名称",chr(13),''),chr(10),'')

2、使用gsub直接对文件进行处理:

cat abc.txt | awk -F '|' '{gsub(/\n/,"",$s); print $0}' > abc1.txt

其中s为存在换行的列,如上例,则s为2。

3、通过删除异常换行的行尾换行符进行处理:

a=`awk -F '|' '{if(NF!=n) {print NR}}' abc.txt`
for l in $a
do
	echo $l
	sed -i "$l,$l{N;s/\n/ /}" abc.txt
done

其中n为一条正常数据的列数,如上例,则s为6。

4、一条数据中存在多个字段有换行的情况,即一条正常数据变成2条或者多条的情况。直接对文件进行操作,类似方法三的操作:

a=`awk -F '|' '{if(NF!=n) {print NR}}' abc.txt|head -1`
while [ "$a" != "" ]
do
	sed -i "$a,$a{N;s/\n/ /}" abc.txt
	a=`awk -F '|' '{if(NF!=n) {print NR}}' abc.txt|head -1`
done

数据量小的话比较快,数据量大,换行多的话就比较慢,也适用于一条数据多个换行。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值