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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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