Linuxのスクリプトで特定の文字列以前の文字を取得、もしくは以降の文字以降を削除


ログの収集で正規表現を使って、`\`(バックスラッシュ)よりも前の文字列(下記の場合だと`stat/about`)を取得したいと考えています。

置換は分かるのですが、その部分だけ抜き取る正規表現の書き方がわかりません。  
どうかご教授いただけませんでしょうか。

[code]

    stat/about\,\form
    posts/6\,\format\
    
[/code]




cut コマンドを使う方法もあります(正規表現は使っていませんが…)。

[code]

    $ echo 'stat/about\,\form' | cut -d\\ -f1
    stat/about
    
[/code]

その他、GNU grep では以下の様になります。

[code]

    $ echo 'stat/about\,\form' | grep -Po '^.*?(?=\\.*)'
    stat/about
    
[/code]




逆に「バックスラッシュとそれ以後を消す」と考えて、そこの部分を正規表現でマッチさせて、空文字に置換しては？

[code]

    sed -e 's/\\.*//'
    
[/code]

バックスラッシュが複数あるときは複数取り出したい、というなら、awkでフィールド区切り文字をバックスラッシュにすればいいかと。

