samエディタで次のコマンドを使用すると、文字列 "ed"を検索して印刷できますが、 "red"は検索できません。
,x./*\n/ g/ed v/red p
編集でも同様のことができる方法を見つけようとしています。文字列 "ed"を検索したいのですが、次の内容を含む行は取得したくありません。
アル字型編集する、良い編集する、荷物編集する、等。
v コマンドに精通していますが、ag コマンドで使用する方法や ed で使用できるかどうかはわかりません。
答え1
これは、単語の境界マークを含む正規表現を使用するのが最善です。
g/\<ed\>/p
私はそれについて完全に慣れていないsam
ので、あなたが示した編集式についてコメントすることはできません。上記の式はワイヤー含む言葉 ed
ed
つまり、前後に a がない文字列です。単語文字。単語文字はセットの文字です[[:alnum:]_]
。幅がゼロの\<
アサーションであり、\>
単語文字と単語以外の文字の境界で一致します。
\<
非標準ですが、GNU\>
システムと一部のBSDシステムで使用できます。 macOSは[[:<:]]
andを代わりに使用しますが、GNUシステムは単語の始めと終わりでandを使用して一致させる[[:>:]]
こともできます。\b
移植可能な方法でこれを行うには一致する必要がありますが、単語が行の先頭または末尾に表示されるか、1行に2つの文字しかない[^[:alnum:]_]ed[^[:alnum:]_]
特殊なケースも考慮する必要があります。ed
答え2
Kusalanandaの回答の拡張として、ExはPOSIXエディタでもあります。\< \>
POSIXではワードアンカーをサポートする必要があります。。だから、単に使用することをお勧めします
g/\<ed\>/p
しかし、前に。