Как заменить или удалить строки, содержащие символ / в BASH? - PullRequest
1 голос
/ 18 апреля 2011

У меня есть файл, который начинается с нескольких текстовых строк и продолжается многими двоичными строками.Мне нужно удалить текстовую строку с начала, чтобы получить чистый двоичный контент.Предположим, что двоичный раздел начинается со специального слова, такого как: Соединение.Я попытался сделать это, используя скрипт bash с sed, чтобы удалить все эти текстовые строки.Проблема в том, что текстовые строки, содержащие / символ, заставляют sed интерпретировать символ после / при вводе как отдельную команду.Мой код выглядит так:

while read line
  do
        sed -i "/"$line"/d" file_name

        if [ "$line" != Connection* ]
                break;

  done < file_name

таким образом, когда переменная "строка" содержит / символ (например, css / jj) sed возвращает ошибку:

sed: -e выражение # 1, символ 6: неизвестная команда: `j '

Как передать переменные, содержащие символ /, в sed для удаления связанных строк?Кстати, есть ли способ отделить двоичный контент от текста в файле?Иногда в моих файлах нет специального слова или знака в начале двоичного раздела, чтобы распознать его.

1 Ответ

0 голосов
/ 18 апреля 2011

Вы можете смело заменять / разделитель любым другим символом, при условии, что вы заменяете его в каждом случае. Иногда я использую §, что довольно редко встречается в большинстве текстов.

...