-2

日付がリストされたデータ ファイルがあります。日付は m/d/yyyy の形式です。以下に例を示します。

1/1/2011
1/10/2011
10/1/2011
10/10/2011

私の質問は、どうすれば月と日を抽出して、2 つの別々の列の別のファイルに保存できるのでしょうか? たとえば、次のように表示したい

Month  Day
1       1
1       10
10      1
10      10
4

5 に答える 5

1

my ($Day, $Month, $Year) = split(m{/}, $Line);

于 2013-10-09T19:50:40.117 に答える
0

すべての日付が同じ形式であると仮定すると、正規表現は必要ありません。ソリューションの一般的な形式は次のとおりです。

my ($month, $day, $year) = split(m@/@, $date);

file から読み取る場合はdates.txt、次のように使用できます。

open my $DATES, '<', 'dates.txt'
  or die "Couldn't open dates.txt: $!\n";

while (my $date = <$DATES>) {
  $date =~ s@\r|\n@@g; # get rid of trailing newlines, however formatted
  my ($month, $day, $year) = split(m@/@, $date);
  # whatever you need to do with the date parts, do here
};

close DATES;

教育機関の学術的名誉ポリシーに従って、宿題を提出するときに、このスタック オーバーフローの回答を参照として引用する必要がある場合があることに注意してください。

于 2013-10-09T19:45:21.063 に答える
0

使用するperl

perl -pe 's#(\d+)/(\d+)/\d+#$1\t$2#' file > new_file

使用するsed

sed -r 's#([0-9]+)/([0-9]+)/[0-9]+#\1\t\2#' file > new_file
于 2013-10-09T19:46:24.333 に答える
-1

splitスライスで使用:

#!/usr/bin/perl
use warnings;
use strict;
use feature 'say';

for my $date (qw(1/1/2011
                 1/10/2011
                 10/1/2011
                 10/10/2011)) {
    say join "\t", (split m{/}, $date)[0, 1];
}
于 2013-10-09T19:47:06.237 に答える