現在、私は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
あなたの例では、不要な最後の部分を削除しました。
関連: