1 pièce(s) jointe(s)
Supprimer une ligne lorsqu'on trouve un caractère
Hello tout le monde,
Alors j'aimerai supprimer toute les lignes de mon fichier contenant un "$".
Je m'explique j'ai mon fichier :
Citation:
#!/bin/csh -xv
#BSUB -J calmod_POGO_2CU
Pièce jointe 181438
#BSUB -o calmod_POGO_2CU.o%J
#BSUB -L /bin/csh
umask 002
#----------------------------------------------------------------------
set dir_listing = jdfgjkdfnbjkdfnbjnfdbndfjbndfbndfkb
jnfjkg
$gdfgdfg
dfgdfgdfg74654654fdg
fdgdfg
fgdf
set toto = tata
fgfg
fg;hmfh
set toto = tutu2
dfdsfgdfg
set nono = ueueue777
set khjkhjkhkj 8787687657
titi = tutu
set a = titi
set b = $toto
set c = 7 + $toto
set d = $toto + 9
set e = $nono + $toto
et mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RecupCleValeurTest {
public static void main(String[] args) throws FileNotFoundException {
String fichier = "C:\\Users\\ksmaili\\workspace\\fichiertxtP2CSH.txt";
Classement cl = new Classement();
// lit le fichier ligne par ligne
try{
// lire un fichier
InputStream ips=new FileInputStream(fichier);
InputStreamReader ipsr=new InputStreamReader(ips);
BufferedReader br=new BufferedReader(ipsr);
// lire ligne par ligne
String ligne;
while ((ligne=br.readLine())!=null){
//System.out.println(ligne);
if(ligne.matches("^set.*=.*")){
//System.out.println("On récupère : " + ligne);
}
Pattern p=Pattern.compile("^set(.*)=(.*)");
Matcher m=p.matcher(ligne);
while(m.find()) {
//System.out.println(m.group(1)); // affiche les clés
//System.out.println(m.group(2)); // affiche les valeurs des clés
// Maintenant je vérifie si la clé est déjà présente dans la map
boolean cle = cl.verif(m.group(1));
boolean cle2 = cl.verif(m.group(2));
// Si elle n'est pas présente, on l'ajoute dans la map
if (cle != true && cle2 != true){
cl.add(m.group(1), m.group(2));
//System.out.println(cle);
}
}
}
cl.afficher();
br.close(); // On ferme le flux
}
catch (Exception e){
System.out.println(e.toString());
}
}
} |
mon code m'affiche toutes les clé et valeurs des lignes ayant la forme set ... = ... de mon fichier c'est à dire :
dir_listing = jdfgjkdfnbjkdfnbjnfdbndfjbndfbndfkb
toto = tata
a = titi
d = $toto + 9
e = $nono + $toto
nono = ueueue777
c = 7 + $toto
b = $toto
le problème c'est que j'aimerai que lorsque mon programme détecte un "$..." il supprime la ligne en gros il ne me l'affiche pas dans ma console.
par exemple pour :
set b = $toto => il me supprime la ligne
set c = 7 + $toto => il m'affiche c = 7
set d = $toto + 9 => il m'affiche d = 9
set e = $nono + $toto => il me supprime la ligne
Avez vous une petite idée
Thinks :)
ps : je pense utilisé les expressions régulières comme dans mon posts poser récemment