Использование sed:
Чтобы изменить два символа один за другим в строке,
sed -i 's/A/Y/;s/B/V/' file
Для изменения и сохранения в разных файлах:
sed 's/A/Y/' file > file1; sed 's/B/V/' file > file1
У вас внутри строки есть кавычки, а не просто разделитель строки. Вам нужно использовать кавычки, чтобы определить вашу строку, а также использовать ее:
lsp(){
sed_str="/$1/,/^$/ p"
echo $sed_str
lspci -kvnn | sed -n "$sed_str"
return
}
export -f lsp
>>> 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.