sed パラメーターの Bash 文字列の置換: Sed: 不明なコマンド: ""

sed パラメーターの Bash 文字列の置換: Sed: 不明なコマンド:

このコマンドを実行するために.bashrcに関数を作成しようとしています。

lspci -kvnn | sed -n '/VGA/,/^$/ p'

、これはVGA最初のパラメータに置き換えられます$1

これが私が思いついたものです:

lsp(){
    sed_str="'/$1/,/^$/ p'"
    echo $sed_str
    lspci -kvnn | sed -n $sed_str
    return
}
export -f lsp

トラブルシューティングのために関数が失敗する理由を理解できません。echo $sed_str出力は、最初のコマンドの正規表現と同じです。sedはまだ文句を言います。

[user@linux ~]$ lsp VGA
'/VGA/,/^$/ p'
sed: -e expression #1, char 1: unknown command: `''
[user@linux ~]$ 

おそらくここには見えないものが明らかになるでしょう。

カーネルとシェル:

uname -r      -> 5.8.14-arch1-1
echo $SHELL   -> /bin/bash

ベストアンサー1

引用符は区切り文字ではなく文字列に含まれています。文字列を定義して使用するには、引用符を使用する必要があります。

lsp(){
    sed_str="/$1/,/^$/ p"
    echo $sed_str
    lspci -kvnn | sed -n "$sed_str"
    return
}
export -f lsp

おすすめ記事