sed、grep、および PCRE を使用して、オプションの区切り文字で単語を照合します。

sed、grep、および PCRE を使用して、オプションの区切り文字で単語を照合します。

オプションの区切り文字を使用して単語を一致させる方法は?

次のようなファイルがあるとしましょう。file

a
b
"a"
"a
c

引用符の有無にかかわらず一致したいですa(一致したくありません"a)。これらの一致を実行するためにPerl互換の正規表現をgrep使用したいと思います。sed私はできます。

  • egrep '^("a"|a)$' <fileそして
  • sed -nr 's/^("a"|a)$/\1/p' <file

でも…醜いです。

答え1

これは働きます:

egrep '^("?)a\1$' <file

詳しくは、この質問をご覧ください。https://stackoverflow.com/questions/31730946/matching-in-matching-space-with-sed-since-when-it-is-supported/31731446

答え2

Perlでは(1行):

perl -ne 'print "$1\n" if (m/^(a|"a")$/);' < filename

$1キャプチャしたテキストです。~へかっこ。

出力:

a
"a"

スクリプトで次のように書くことができます。

#!/usr/bin/perl
use strict;
use warnings;

open my $fh, "<", "abc.txt" or die $!;

while (<$fh>)
{
    chomp;
    print $_, "\n", if (m/^(a|"a")$/);
}
close $fh;

関連情報