删除 ';'在每一行的末尾 [英] delete ';' at the end of each line

查看:44
本文介绍了删除 ';'在每一行的末尾的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在 Linux 服务器上有一个巨大的 (10+ GB) .csv 文件.线条看起来像这样:

<前>6;20000327;20000425;990099,0;20000327;LL;UBXO;7;-1;62;F;30;001;NO;NO;wgB;0;99;0002;5530;001;718;196;;AA;N;N;100;53,81;0;0;0;1;1;;1;6;20000327;20000425;990099,0;20000425;LL;OLD*;62;62;92;F;30;001;NO;NO;ueB;0;99;0002;XXXX;001;;;1;AA;N;N;;;0;0;1;0;0;;30;

我正在寻找一个快速脚本来执行以下操作:

  1. 将任何出现的 , 更改为 .
  2. 删除每一行的最后一个分号

我对第二个特别有问题,因为脚本不应该介意它是 Linux 文件还是 windows 文件.

我尝试用 sed 来做,但到目前为止失败了.

我最终混合使用了 Dennis Williams 和 SiegeX 解决方案:

sed 's/;\([0-9]*\),\([0-9]*\);/;\1.\2;/g;s/;\(\r\?\)$/\1/' 输入文件

(带有 s/;[[:blank:]]*$//的部分在我的文件中不起作用...)

解决方案

sed 's/;\([0-9]*\),\([0-9]*\);/;\1.\2;/g;s/;[[:blank:]]*$//' ./infile

I have a huge (10+ GB) .csv file on a Linux server. The lines look somehow like this:

6;20000327;20000425;990099,0;20000327;LL;UBXO;7;-1;62;F;30;001;NO;NO;wgB;0;99;0002;5530;001;708;196;1;AA;N;N;100;53,81;0;0;0;1;1;;1;
6;20000327;20000425;990099,0;20000425;LL;OLD*;62;62;92;F;30;001;NO;NO;ueB;0;99;0002;XXXX;001;;;1;AA;N;N;;;0;0;1;0;0;;30;

I am searching for a fast script to do the following:

  1. change any occurrence of <number>,<number> to <number>.<number>
  2. delete the last semicolon of each line

I have especially problems with the second one, because the script shouldn't mind if it is a Linux file or a windows file.

I tried to do it with sed but failed thus far.

[edit]

I finally used a mix of Dennis Williams and SiegeX solutions:

sed 's/;\([0-9]*\),\([0-9]*\);/;\1.\2;/g;s/;\(\r\?\)$/\1/' inputfile

(the part with s/;[[:blank:]]*$// didn't work at my file...)

解决方案

sed 's/;\([0-9]*\),\([0-9]*\);/;\1.\2;/g;s/;[[:blank:]]*$//' ./infile

这篇关于删除 ';'在每一行的末尾的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆