2016-08-25 5 views
3

で一致していない点は、私が入力を持っている:^[:空白:]次のようにsedを

INa.aaを...................その前の米国ベースの所有者の後の2010年10月には

私の目標は、手紙i/Iで始まるすべての単語の周りに括弧を置くことである借金を支払うことができませんでした。だから私は、コマンドを発行:

この出力を返さ
sed 's/\<i[^[:blank:]]*\>/(&)/gi' input_data 

(INa.aa)2010年10月................ (その)前の米国ベースの所有者は、私は得ることはありませんどのような借金に

を支払うことに失敗した後、なぜ^[:blank:]*INa.aa後にドットが含まれていない、のですか?

ありがとうございます。

答えて

6

\>「単語の末尾」エスケープを使用します。ワード境界は

左側の文字は、「単語」の文字と右側の文字である「非単語」文字、又はその逆

がであるように定義されますmanual\bを参照)。 \>の場合、「逆の場合」は適用されません。

「単語」とは何ですか?

「単語」文字は任意の文字または数字またはアンダースコアです。

「非単語」はすべて他のものです。ピリオドとブランクの境界は\>に一致すると予想されますが、ピリオドとブランクの両方が非ワード文字です。単語境界は、最後のaと最初の.の間です。

aの間の期間も単語境界で囲まれていますが、空白が含まれていないため、一致の一部です。

次の空白までをすべて一致させる場合は、正規表現内の\>をスキップすることができます。

+0

非常に良い答えは、私が終了することはできません知っていた\>。ありがとう! – PesaThe