Linux — удалить строки в файле, если они содержат текущий рабочий каталог.Linux

Anonymous
Linux — удалить строки в файле, если они содержат текущий рабочий каталог.

Сообщение Anonymous »

По сути, это сводится к вопросу «Как объединить pwd и sed delete (или альтернативу)». Учитывая файл со списком путей к файлам, как мне удалить строки, содержащие мой текущий каталог?
Итак, если файл1 содержит:

Код: Выделить всё

/dirA/subdir1/somefile
/dirB/subdir2/somefile
/dirB/subdir2/somefile
/dirC/subdir2/somefile
/dirD/subdir1/somefile
И мой рабочий каталог:

Код: Выделить всё

/dirB/subdir2/
Тогда мои выходные данные должны редактировать файл1 на месте, чтобы получить:

Код: Выделить всё

/dirA/subdir1/somefile
/dirC/subdir2/somefile
/dirD/subdir1/somefile
Я знаю, что могу удалять строки с помощью:

Код: Выделить всё

sed '/pattern to match/d' file1
И я могу передать pwd в sed вот так:

Код: Выделить всё

sed 's?#REPLACE-WITH-PATH?'`pwd`'?'
Поэтому я подумал, что могу объединить их в одно из следующих:

Код: Выделить всё

sed '/'`pwd`'/d' file1
sed '?'`pwd`'?d' file1
sed '#'`pwd`'#d' file1
Первый вариант не будет читаться правильно, поскольку он интерпретирует косую черту пути как часть команды sed. Второй не распознает вопросительный знак. Третий запускается, но ничего не делает.

Подробнее здесь: https://stackoverflow.com/questions/793 ... -directory

Вернуться в «Linux»