電子書籍の厳選無料作品が豊富!

入力ファイルの各行の先頭3桁は数字になっています。その3桁を「抽出、ソート、重複削除」したいのですが、どのようにしたらよいかわかりません。
教えて頂けると幸いです。

A 回答 (2件)

Windows でも動かすならば、


perl 単体で処理したほうが都合がいいですね。

# usage: perl [スクリプト] [入力ファイル]

my %a;
foreach (<>) {
chomp;
$a{$1}++ if /^(\S{1,3})/; # 各行の先頭3桁を勘定、ただし空行を除く
}
@sorted = sort {$a cmp $b} keys(%a); # 先頭3桁を辞書順並び替え
foreach (@sorted) {
print "$_\n";
}
    • good
    • 0
この回答へのお礼

Thank you

ありがとうございます!

お礼日時:2016/03/22 12:09

cat ファイル | perl -pe 's/^(...).*/$1/' | sort | uniq

    • good
    • 0
この回答へのお礼

うーん・・・

当方の環境はWindows版ActivePerlですが、抽出部分でうまくいきませんでした。
  perl -pe 's/^(...).*/$1/' < test.txt
  type test.txt | perl -pe 's/^(...).*/$1/'
正規表現が異なるのでしょうか?どちらも駄目でした。。。

Solaris環境ではうまくいくのを確認しました。
  perl -pe 's/^(...).*/$1/' < test.txt | sort -u

お礼日時:2016/03/22 09:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!