【问题标题】:perl5 substitution with blank elementsperl5 用空白元素替换
【发布时间】:2015-07-19 07:05:22
【问题描述】:

我有这个文件,其中 Reg 编号在数字和字母之间有一个空格,1234567 A。我想要 1234567A

$line =~ s/^(\w+),(\w+),(\d+),(\d+)(\s+)(\w)/\1,\2,\3,\4\6/;

这会改变

surname, middle_name, id, Reg_no
Tommy,t,1,1234567 A

进入

Tommy,t,1,1234567A  

如我所愿。

如果我有

Tommy,,1,1234567 A

它不会改变剩余的 1234567 A。似乎是第二个单元格中的空白(null?)内容导致了问题。有什么想法吗?

谢谢。

【问题讨论】:

    标签: perl scripting


    【解决方案1】:

    最好的办法是使用 解析器,例如Text::CSV_XS 模块,但作为一种快速而肮脏的解决方案,您可以使用一些开关以逗号分隔行,获取第三个字段,删除第一个空格,并再次打印:

    perl -F, -lanE '$. > 1 and $F[3] =~ s/\s+//; do { $" = q|,|; say "@F" } ' infile
    

    它产生:

    surname, middle_name, id, Reg_no
    Tommy,t,1,1234567A
    Tommy,,1,1234567A
    

    【讨论】:

      猜你喜欢
      • 2017-03-31
      • 1970-01-01
      • 2022-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多