J’ai un contenu suivant dans un fichier content.txt
cat content.txt [testing] This is testing I want to remove content [testing1] This is testing1 This is contains testing information [dummy] some text here as well this is a dummy file [source] This is the source file it contains data related to source file
J’ai un autre fichier “test.txt” qui contient une chaîne à supprimer du fichier “content.txt”
cat file.txt testing1 dummy
J’ai besoin que chaque chaîne soit lue à partir de fichier.txt et la même chaîne devrait être supprimée suivie des lignes suivantes jusqu’à ce que la chaîne suivante soit trouvée entre crochets dans le contexte.txt
La sortie devrait être comme ci-dessous:
[testing] This is testing I want to remove content [source] This is the source file it contains data related to source file
Commande courte awk
:
awk -vk="testing1" '/^\[/{ f = ($1 == "["k"]") }!f' file
k="testing1"
– nom de la clé indiquant la section à ignorer f = ($1 == "["k"]")
– définir le drapeau f
avec la valeur true
lors de la rencontre de la section désignée par la clé k
; sinon – sertie de false
Le résultat:
[testing] This is testing I want to remove content [dummy] some text here as well this is a dummy file
Ce type de tâche est exactement ce que le mode paragraphe de awk a été créé pour gérer:
$ awk -v RS= -v ORS='\n\n' '$1 != "[testing1]"' file [testing] This is testing I want to remove content [dummy] some text here as well this is a dummy file