Sed正規表現:-EとBREの違い(Sed&Awk 101ハッキング)

Sed正規表現:-EとBREの違い(Sed&Awk 101ハッキング)

現在、私はawkとsedを自分で教えています。オンラインブックSed & Awk 101 hacksを見つけて、これまではとても良いと思います。それにもかかわらず、「グループ化」という概念を理解できないため、数日間続いていないことがわかりました。これが入力ファイルです。

cat employee.txt
101,John Doe,CEO
102,Jason Smith,IT Manager
103,Raj Reddy,Sysadmin
104,Anand Ram,Developer
105,Jane Miller,Sales Manager

この本のsedコマンドは次のとおりです。

sed 's/\([^,]*\).*/\1/g' employee.txt

このコマンドの出力は次のとおりです。

101
102
103
104
105

コマンドを理解しようとしていますが、理解できません。その後、sed文書(man sed)を確認した後、-Eフラグを使用しないと正規表現がBRE構文を採用することがわかりました。この式が同じ入力を取得できない理由を教えてください。

sed -E 's/^(\d+),.+/\1/g' employee.txt

よろしくお願いします!

答え1

\dでは動作しません。代わりにsed使用できます。[[:digit:]][0-9]

sed -E 's/^([[:digit:]]+),.+/\1/' employee.txt
sed -E 's/^([0-9]+),.+/\1/' employee.txt

gあなたの例では、不要な最後の部分を削除しました。

関連:

関連情報