Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 如何更换,如何更换。在大文本文件中_Perl - Fatal编程技术网

Perl 如何更换,如何更换。在大文本文件中

Perl 如何更换,如何更换。在大文本文件中,perl,Perl,我希望使用perl编写一个程序,在一个以制表符分隔的大文本文件(100000行)中查找纬度和经度值,并将lat long值中使用的替换为。该文件有多个列 我想把它改成 512356至51.2356 有人能告诉我怎么做吗 非常感谢,你不需要一个“程序”来实现这一点,你只需要一行程序就可以做到这一点。如果您想用整个文件中的(点)替换文件中的所有,(逗号)(您的问题不涉及原始文件格式的细节),那么下面的技巧是: perl-pi.bak-e's/,/\/g;'您的_file.txt 在运行replace

我希望使用perl编写一个程序,在一个以制表符分隔的大文本文件(100000行)中查找纬度和经度值,并将lat long值中使用的替换为。该文件有多个列

我想把它改成

512356至51.2356

有人能告诉我怎么做吗

非常感谢,

你不需要一个“程序”来实现这一点,你只需要一行程序就可以做到这一点。如果您想用整个文件中的
(点)替换文件中的所有
(逗号)(您的问题不涉及原始文件格式的细节),那么下面的技巧是:

perl-pi.bak-e's/,/\/g;'您的_file.txt


在运行replace之前,它还将备份您的文件,以
您的_file.txt.bak

快速而肮脏的方法是用点替换所有逗号(如果这符合您的要求)

while(){
$\=~s/,/\./g
}
但是,如果有其他字段可能受到影响,更好的解决方案是只替换所需的列

假设您感兴趣的两个字段是制表符分隔文件的第一列和第二列,理想情况下,这两个字段应该匹配,然后替换为“点”

while(){
如果($)=~/(\d+,\d+)\\ |(\d+,\d+)\|(.*)$/){
我的($a,$b,$c)=($1,$2,$3);
$a=~s/,/\./g;
$b=~s/,/\./g;
$|=$a.“|”。$b.“|”。$c;
}
}
这里,,
$a和$b将匹配“纬度和经度”列。

谢谢您的帮助,但是,我希望脚本能够找到纬度和经度值。例如,在逗号前加上一到两个数字。如何将此添加到搜索语句中?我认为,如果您想获得问题的更具体答案,您应该改进您的问题,并添加输入和预期输出。我还建议你自己展示一下你迄今为止所做的努力。
while (<$fh>) {
   $_ =~ s/,/\./g 
}
while (<$fh>) {
    if ($_ =~ /(\d+,\d+)\|(\d+,\d+)\|(.*)$/) {
      my ($a, $b, $c) = ($1, $2, $3);
      $a=~s/,/\./g;
      $b=~s/,/\./g;
      $_= $a."|".$b."|".$c;
    }
}