【问题标题】:Remove trailing commas from header and footer with sed使用 sed 从页眉和页脚中删除尾随逗号
【发布时间】:2018-09-14 04:59:51
【问题描述】:

我想从文件的页眉和页脚中删除逗号。我正在使用以下命令,它删除了逗号,但它扫描了文件中的所有行,我不想这样做。

cat DBS_xx_2014-09-23_234.csv | sed 's/[,\t]*$//' > output.csv

输入文件:

000N5          DBS   103151201409220007770001,,,,,,,,,,,,,,,,,,,,,,,,,,,, 
10,1256,19700802,,,,SMITH,,ABC,,1,,,,,,GX1 4NL  
10,1256,19690802,,,,WilliAM,,XX,,1,,,,,,Gl15 4MX  
101RN5      DBS      103151201409220007770001,,,,,,,,,,,,,,,,,,,,,,,,,,,, 

预期输出:

000N5          DBS   103151201409220007770001
10,1256,19700802,,,,SMITH,,ABC,,1,,,,,,GX1 4NL  
10,1256,19690802,,,,WilliAM,,XX,,1,,,,,,Gl15 4MX  
101RN5      DBS      103151201409220007770001

【问题讨论】:

  • 你的预期输出是什么?
  • 000N5 DBS 103151201409220007770001 10,1256,19700802,,,,SMITH,,ABC,,1,,,,,,GX1 4NL 10,1256,19690802,,,,WilliAM,,XX,, 1,,,,,,Gl15 4MX 101RN5 DBS 103151201409220007770001

标签: csv unix sed


【解决方案1】:

下面的 sed 命令将只删除第一行和最后一行的所有逗号。

$ sed '1s/,\+//g;$s/,\+//g' file
000N5          DBS   103151201409220007770001 
10,1256,19700802,,,,SMITH,,ABC,,1,,,,,,GX1 4NL  
10,1256,19690802,,,,WilliAM,,XX,,1,,,,,,Gl15 4MX  
101RN5      DBS      103151201409220007770001

【讨论】:

  • 相同的错误输入文件是二进制的,我认为如果 POSTCODE 长度为 7,数据数据中的行数在末尾保持“NUL”的原因。例如,,,,, ,BA2 7RH 希望有意义 再次感谢您的帮助。我还通过删除这些行进行检查,将 'NU'L 保留在行的末尾及其作品 sed 's/[,\t ]*$//' DBS_cc_2014-09-25_12345.csv > xx.csv跨度>
  • 在行尾删除“NUL”的任何提示...?再次感谢您的帮助。
猜你喜欢
  • 2012-01-03
  • 2015-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-25
相关资源
最近更新 更多