我正在更新一段代码以将表读入R中。表中的分隔符应为分号。表中的某些元素有分号,应该用冒号替换。同时,代码用分号替换选项卡,这应该保留。
当前脚本有
行sprintf("%s -e '%s' | perl -pe 's/\t/;/g' > %s", hive.cmd, sql, tmp_file)
并应按顺序更新为:
;
替换为:
\t
替换为;
编辑:我应该补充一点,我没有Perl的经验。
答案 0 :(得分:4)
Perl有“音译”操作符(tr/.../.../
)来完成这样的工作。
$string =~ tr/\t;/;:/;
使用替换运算符是过度的。
答案 1 :(得分:-1)
替换字符串的另一种简单方法:
$str = "\; \:\; ";
需要找到两个匹配\;
和\t
我们可以在一个正则表达式中搜索它们并替换为相应的值匹配。
$str=~s/((\;)|\t)/$2 ? '\:' : '\;'/eg;
^ ^
$2
与semicolon
匹配,其余部分与\t
分隔匹配。
print $str;