オプションの区切り文字を使用して単語を一致させる方法は?
次のようなファイルがあるとしましょう。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;