Je développe mon commentaire précédent en y apportant une réponse.
sed -i -e "\|$PrevDay.*$|d" $DataFile2
Explication : Vous utilisez une fonction qui remplace le texte à chaque ligne. Vous avez choisi l'option |
comme délimiteur, écrit l'expression à supprimer entre le premier et le deuxième délimiteur et l'expression à insérer entre le deuxième et le troisième délimiteur. Ainsi, la ligne est modifiée mais pas supprimée.
Si vous souhaitez supprimer la ligne, vous devez utiliser une syntaxe différente :
\|
définit |
comme délimiteur au lieu de la valeur par défaut /
$PrevDay.*$
est le motif à rechercher, où $PrevDay
est une variable de votre script bash
|
marque la fin du modèle de recherche
d
signifie que la ligne correspondant au motif doit être supprimée
Voir este question similaire sur Stackoverflow.
Comme c'est souvent le cas dans le monde UNIX, le même résultat peut être obtenu d'une autre manière, en utilisant par exemple awk
; l'expression suivante signifie : "si le motif ne correspond pas, imprimer toute la ligne".
awk -i '!/$PrevDay.*$/ {print $0}' $DataFile2