J'ai un fichier ci-dessous:
mime PI Name: ISHO SUCCESS RATE RT, Value: 95.663826
scr PI Name: RRC Access Failures due to UU, Value: 0.13394141
prog PI Name: RRC Access Failures due to UU, Value: 0.16077702
sch PI Name: RRC Access Failures due to UU, Value: 0.11781933
Je veux supprimer le texte PI
jusqu'à Value:
. J'ai essayé
sed '/<PI>/,/<\/Value:>/d'
De l'aide?
Remplacez tout de PI
à Value:
avec chaîne vide:
sed 's/PI.*Value://'
Utilisation de la commande d
dans sed
supprimera toute la ligne. En outre, je ne sais pas pourquoi vous utilisez <
et >
. Peut-être que vous les confondez avec \<
et \>
_ grep
utilise pour désigner les limites de mots? Dans ce cas, vous devez savoir que sed
utilise \b
Pour les deux types de limites de mots (début et fin). Donc, vous pouvez écrire quelque chose comme ceci:
sed -i 's/\bPI\b.*\bValue:\b//' your_file
Pour une robustesse supplémentaire, j'utiliserais Perl
pour la quantification paresseuse de .
Pour que vous ne supprimiez que le texte entre la première occurrence de PI
et la première occurrence de Value:
. Bien sûr, tout dépend de votre cas d'utilisation.
Perl -pi -e 's{ \b PI \b .*? \b Value: \b}{}x' your_file
Utilisez ce code ci-dessous pour éliminer plusieurs lignes entre les motifs (y compris les lignes avec des motifs):
sed "/PI/,/Value:/d" your_file
Si vous voulez modifier votre_file directement:
sed -i "/PI/,/Value:/d" your_file