在Perl

时间:2017-06-06 12:22:09

标签: perl

我正在更新一段代码以将表读入R中。表中的分隔符应为分号。表中的某些元素有分号,应该用冒号替换。同时,代码用分号替换选项卡,这应该保留。

当前脚本有

sprintf("%s -e '%s' | perl -pe 's/\t/;/g' > %s", hive.cmd, sql, tmp_file)

并应按顺序更新为:

  1. ;替换为:
  2. \t替换为;
  3. 编辑:我应该补充一点,我没有Perl的经验。

2 个答案:

答案 0 :(得分:4)

Perl有“音译”操作符(tr/.../.../)来完成这样的工作。

$string =~ tr/\t;/;:/;

使用替换运算符是过度的。

答案 1 :(得分:-1)

替换字符串的另一种简单方法:

$str = "\;  \:\;    ";

需要找到两个匹配\;\t我们可以在一个正则表达式中搜索它们并替换为相应的值匹配。

$str=~s/((\;)|\t)/$2 ? '\:' : '\;'/eg;
           ^   ^

$2semicolon匹配,其余部分与\t分隔匹配。

print $str;