sed
обрабатывает файл построчно, и очень сложно заставить его «запоминать» любую информацию по строкам.
Вы можете использовать grep
, чтобы узнать, содержит ли файл заданный шаблон; с помощью -f
вы можете указать несколько шаблонов одновременно. Следующее генерирует полный список pts / 0
.. pts / 9
, затем удаляет шаблоны, уже присутствующие в данном файле, и добавляет оставшиеся в файл:
#!/bin/bash
printf 'pts/%d\n' {0..9} \
| grep -vFf "$1" - >> "$1".new
mv "$1".new "$1"