sedに問題があります。パターンだけを抽出する正しい方法は何ですか?
たとえば、次のリターンはworld
、私はそれがちょうど返すことを期待していますw
echo "hello world" | sed -n 's|hello \(w\)|\1|p'
sedに問題があります。パターンだけを抽出する正しい方法は何ですか?
たとえば、次のリターンはworld
、私はそれがちょうど返すことを期待していますw
echo "hello world" | sed -n 's|hello \(w\)|\1|p'
この方法を使用する方がよいでしょう。
echo "hello world" | sed -r's /.+(w).*/\1/'
これにより、w文字のみが抽出されます。-rオプションは拡張正規表現です。したがって、エスケープ"\"特殊文字は使用しません。
。任意の1文字に一致します。*アスタリスクは0回以上の出現に一致します。+ plusは、1つ以上のオカレンスに一致します。()これは、これを使用したグループ化メソッドであり、参照を取り戻すことができます。sはメソッドの代わりに使用されます。
次のテキストを一致させて置き換える(削除する)のを忘れましたw
:
echo "hello world" | sed -n 's|hello \(w\).*|\1|p'
文字列のいずれかに一致する場合はsedコマンド、最初の文字の2番目の単語のみに一致する場合
sed's /([az]。*)([az])。* / \2/'入力ファイル