Замена строки Bash для аргумента sed :Sed :неизвестная команда:`''

Использование sed:

Чтобы изменить два символа один за другим в строке,

sed -i 's/A/Y/;s/B/V/' file 

Для изменения и сохранения в разных файлах:

sed 's/A/Y/' file > file1; sed 's/B/V/' file > file1
0
12.10.2020, 18:09
2 ответа

У вас внутри строки есть кавычки, а не просто разделитель строки. Вам нужно использовать кавычки, чтобы определить вашу строку, а также использовать ее:

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

>>>> lspci -kvnn | sed -n "$sed_str" 
    

Одинарные кавычки — источник проблем. Также вам нужно дважды указать $sed_strдля защиты от разбиения на слова и расширения имени файла после его расширения.

Поскольку вы не указали свои переменные в кавычках, в оболочке это выглядит следующим образом

... ¦ sed -n '/VGA/,/^$/ 'p

arg1 =   -n
arg2 =  '/VGA/,/^$/
arg3  = 'p

см. 2 и 3 не имеют смысла для sed, и он жалуется на это. Он думает, что ' — это какая-то команда sed.

1
18.03.2021, 22:58

Теги

Похожие вопросы