日付がリストされたデータ ファイルがあります。日付は 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
my ($Day, $Month, $Year) = split(m{/}, $Line);
すべての日付が同じ形式であると仮定すると、正規表現は必要ありません。ソリューションの一般的な形式は次のとおりです。
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;
教育機関の学術的名誉ポリシーに従って、宿題を提出するときに、このスタック オーバーフローの回答を参照として引用する必要がある場合があることに注意してください。
使用する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
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];
}