2011-04-18 6 views
1

J'ai un fichier qui commence par quelques lignes de texte et continue avec beaucoup de lignes binaires. J'ai besoin de supprimer la ligne de texte depuis son début pour gagner un pur contenu binaire. Supposons que la section binaire commence par un mot spécial comme: Connexion. J'ai essayé de le faire en utilisant un script bash avec sed pour supprimer toutes ces lignes de texte. Le problème est le suivant: les lignes de texte contenant / caractère d'interpréter la cause sed caractère après / en entrée comme une commande séparée. Mon code est comme ceci:Comment remplacer ou supprimer les lignes contenant/caractère dans BASH?

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

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

    done < file_name 

cette façon, lorsque la variable "ligne" contient le caractère / (par exemple css/mau) sed renvoie une erreur:

sed: expression -e # 1, carboniser 6: commande inconnue: `j »

Comment puis-je passer des variables contenant / caractère à sed supprimer les lignes liées? Par ailleurs, existe-t-il un moyen de séparer le contenu binaire du texte dans un fichier? Parfois, mes fichiers n'ont pas de mot spécial ou de signe au début de la section binaire pour le reconnaître.

Répondre

0

Vous pouvez remplacer en toute sécurité / délimiteur par un autre caractère, à condition de le remplacer dans chaque occurrence, Parfois, j'utilise § ce qui est assez rare dans la plupart des textes.

+1

Merci pour votre réponse, mais comme je l'ai lu dans sed didacticiels en utilisant d'autres délimiteurs est possible juste pour le remplacement (avec des drapeaux) et n'est pas possible pour la suppression. heureusement, j'ai pu résoudre mon problème d'extraction de contenu binaire à partir de fichiers (en fait tcp flux de fichiers obtenus à partir de tcpflow) au moyen de l'outil "avant tout" et en personnalisant ensuite sa configuration. – Setareh

+0

Vous avez raison et tort. Une adresse sous la forme '/.../' peut être changée en '\ c ... c' où' c' est n'importe quel caractère. En utilisant la commande 's /.../.../', les délimiteurs peuvent être changés comme si 'sc ... c ... c' où' c' est un caractère quelconque. – potong

Questions connexes