Как да замените или изтриете редове, съдържащи знак / в BASH?

Имам файл, който започва с няколко текстови реда и продължава с много двоични редове. Трябва да изтрия текстов ред от началото му, за да получа чисто двоично съдържание. Да приемем, че двоичният раздел започва със специална дума като: връзка. Опитах се да направя това с помощта на bash скрипт с sed, за да изтрия всички тези текстови редове. Проблемът е: текстовите редове, съдържащи / символ, карат sed да интерпретира знак след / във входа като отделна команда. Моят код е като този:

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

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

  done < file_name

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

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

Как мога да предам променливи, съдържащи / символ към sed, за да изтрия свързани редове? Между другото, има ли начин да се отдели двоично съдържание от текст във файл? Понякога моите файлове нямат специална дума или знак в началото на двоичния раздел, за да го разпознаят.


person Setareh    schedule 18.04.2011    source източник


Отговори (1)


Можете спокойно да замените разделителя / с всеки друг знак, при условие че го заменяте при всяко появяване. Понякога използвам §, което е доста необичайно в повечето текстове.

person mouviciel    schedule 18.04.2011
comment
Благодаря за отговора ви, но както прочетох в уроците за sed, използването на други разделители е възможно само за замяна (с флаг s) и не е възможно за изтриване. за щастие можех да разреша проблема си с извличане на двоично съдържание от файлове (всъщност tcp поточни файлове, получени от tcpflow) с помощта на инструмент foremost и след това да персонализирам конфигурацията му. - person Setareh; 20.04.2011
comment
И прав си, и не си прав. Адрес във формата /.../ може да бъде променен на \c...c, където c е произволен знак. При използване на командата s/.../.../ разделителите могат да се променят така sc...c...c, където c е произволен знак. - person potong; 06.01.2012