2010-09-03 2 views

Répondre

4

Les ouvrages suivants indépendamment du fait que le \n est la fin de la ligne ou une barre oblique inverse et une lettre « n »:

sed 's/\[.*] //' $file 

Le schéma ressemble à un crochet ouvert suivie d'une séquence de caractères à le dernier crochet fermant et un espace suivant (s'il y en a plusieurs). Vous pouvez affiner le '.*' en '[^]]*' pour faire correspondre tout ce qui n'est pas un crochet fermé; cela supprime uniquement le premier crochet fermé.

2

/[^\[]*/ vous obtient la plupart du chemin. Si rien n'apparaît après [...], alors c'est suffisant.

+0

L'OP peut vouloir ajouter un espace à une extrémité ou th'other de cette regex, si des espaces sont intéressants. –

+0

Pouvez-vous expliquer ce que vous allez faire d'autre avec cet ER? Il correspond à un modèle de «n'importe quoi sauf barre oblique inversée ou crochet ouvert», donc vous avez du travail à faire pour l'utiliser dans une opération de remplacement, n'est-ce pas? –

1

vous pouvez utiliser awk

$ more file 
text [dont want text here ] text text [ dont want text] \n 
text text text [ dont want text] \n 

$ awk -vRS=']' '/\[/{gsub(/\[.*/,"")}1' ORS="" file 
text text text \n 
text text text \n