grepの代わりにsedを使用して行の一致部分のみを出力する

grepの代わりにsedを使用して行の一致部分のみを出力する

私は単純なbashスクリプトを書いています(実際にこれを行う方法を学んでいます)、この関数はechoとsedを使用して正確に同じ出力を返したいと思います。 sedで解決策を見つけましたが、コンソールでは機能しますが、スクリプト内では機能しません。 (スクリプトはsudoとして呼び出されます。多分それは重要かもしれません)

これは私の機能です。

function strip
{
     echo "$1" | grep -oP '[a-zA-Z0-9\+\-\=\ ]+' | head -n 1;
}

これがうまくいく方法です。

入力: "-壁"
出力: "-壁"

入力: "-O3%## -Wall"
出力: "-O3"

入力: "%#$#$"
出力: ""

誰もがsedを使用することが何であるかを示すことができますか?

答え1

echo ___abc___ | sed 's/^.*\(abc\).*$/\1/'
abc

関連情報