簡體   English   中英

如何通過命令行參數讀取文本文件並使用perl打印列?

[英]How to read the textfile by command line arguments and print the column by using perl?


如何使用perl命令行參數讀取文本文件並使用perl打印第三

我很驚訝從命令行輸入並打印所需的列。 幫助我選擇正確的方法來達到預期的輸出。

我編寫以接受命令行輸入的代碼:( map.pl

use strict;
use warnings 'all';
use Getopt::Long 'GetOptions';
my @files=GetOptions(
    'p_file=s' => \my $p_file,
);
print $p_file ? "p_file = $p_file\n" : "p_file\n";

我得到上面代碼的輸出:

perl map.pl -p_file cat.txt
p_file = cat.txt

cat.txt :( Input file

ADG:YUF:TGH
UIY:POG:YTH
GHJUR:"HJKL:GHKIO

預期產量:

TGH
YTH
GHKIO

Perl可以自動讀取其名稱作為命令行參數提供的文件。 以下命令應產生預期的輸出

perl -F: -le 'print $F[2]' cat.txt

-F:打開自動autosplit模式,將字段分隔符設置為:並在輸入文件的行上循環。 -l在輸入和輸出期間處理行尾。 對文件的每一行執行e標志之后的代碼( 'print $F[2]'打印第三個字段)。 閱讀perldoc perlrun了解更多perldoc perlrun

您需要閱讀文件並分割行以獲取列,然后打印所需的列。 這是一個演示代碼段,使用perl -s開關來解析命令行參數。 像這樣運行./map.pl -p_file = cat.txt

#!/usr/bin/perl -s
use strict;
use warnings;
use vars qw[$p_file];

die("You need to pass a filename as argument") unless(defined($p_file));
die("Filename ($p_file) does not exists") unless(-f $p_file);

print "Proceeding to read file : $p_file\n\n";

open(my $fh,'<',$p_file) or die($!);

while(chomp(my $line = <$fh>)) {
        next unless(defined($line) && $line);
        my @cols = split(/:/,$line);
        print $cols[-1],"\n";
}

close($fh);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM