Как работает SED.
SED может работать со всеми строками в файле одна за другой, поэтому вам не нужно кормить SED каждой строкой WHILE.
$cat sphlist | while read f; do sed 's/signals/nb-signals/' $f; done
В приведенном выше примере SED рассматривает файл $ f как файл.Поскольку такого файла нет, вы получаете сообщение об ошибке «Нет такого файла или каталога».
$cat sphlist | while read f; do echo $f; done
Ничего особенного в приведенной выше команде нет, поскольку вы читаете построчно и печатаете их.
$cat sphlist | sed 's/signals/nb-signals/' | while read f; do echo $f ; done
В приведенном выше примере вы передаете результат CAT в SED, который вы можете сделать напрямую, как показано ниже
sed 's/signals/nb-signals/' sphlist
И затем вы передаете результат SED в WHILE, который печатает строку за строкой.Вышесказанное - только все, что вам нужно.
sed 's/signals/nb-signals/g' sphlist
Обратите внимание на 'g' в последнем из SED в приведенной выше команде?это для глобальной замены значений в файле.