Question AWK recherche
Résolu
marcloarec
Messages postés
14
Date d'inscription
Statut
Membre
Dernière intervention
-
zipe31 Messages postés 36402 Date d'inscription Statut Contributeur Dernière intervention -
zipe31 Messages postés 36402 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai un dossier qui possède de nombreuses lignes. Certaines que je veux et certaines que je ne veux pas. Cependant, certaines de ces lignes n'apparaissent pas toujours avec un retour chariot et donc coupent les lignes en écriture. Par exemple:
$INGGA,100712.00,5617.13610,N,05223.63366,W,2,14,00.7,019.724,M,0.0,M,0.0,0000*4D
$INVTG,337.16,T,335.86,M,012.$PADCP,27,20140813,100708.85
Le fait est que j'aimerais pouvoir reprendre ce qui suit "$PADCP" mais retirer la ligne qu'il coupe.
Est-ce possible de le repérer? (car il vient toujours de manière aléatoire)
Merci de votre aide.
J'ai un dossier qui possède de nombreuses lignes. Certaines que je veux et certaines que je ne veux pas. Cependant, certaines de ces lignes n'apparaissent pas toujours avec un retour chariot et donc coupent les lignes en écriture. Par exemple:
$INGGA,100712.00,5617.13610,N,05223.63366,W,2,14,00.7,019.724,M,0.0,M,0.0,0000*4D
$INVTG,337.16,T,335.86,M,012.$PADCP,27,20140813,100708.85
Le fait est que j'aimerais pouvoir reprendre ce qui suit "$PADCP" mais retirer la ligne qu'il coupe.
Est-ce possible de le repérer? (car il vient toujours de manière aléatoire)
Merci de votre aide.
A voir également:
- Question AWK recherche
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Rechercher ou entrer l'adresse mm - recherche google - Guide
- Recherche photo - Guide
- Je recherche une chanson - Guide
- Rechercher ou entrer l'adresse 4 - recherche google ✓ - Forum Windows
2 réponses
J'ai essayé ce code
awk -F, '{if ($0 ~ "PADCP" && $0 ~ "CADCP") print $0}' | awk -F "" '{for (i=NF-36;i<=NF;i++) printf ("%s",$i);printf "\n"}'
en pensant que ce qui suivait "$PADCP" était fixe mais ça ne l'est pas alors ça ne marche pas...
awk -F, '{if ($0 ~ "PADCP" && $0 ~ "CADCP") print $0}' | awk -F "" '{for (i=NF-36;i<=NF;i++) printf ("%s",$i);printf "\n"}'
en pensant que ce qui suivait "$PADCP" était fixe mais ça ne l'est pas alors ça ne marche pas...
Salut,
Pour bien comprendre...
tu as ça :
Et tu veux quoi en sortie ?
Pour bien comprendre...
tu as ça :
$INGGA,100712.00,5617.13610,N,05223.63366,W,2,14,00.7,019.724,M,0.0,M,0.0,0000*4D
$INVTG,337.16,T,335.86,M,012.$PADCP,27,20140813,100708.85
Et tu veux quoi en sortie ?
$ cat plop
$INGGA,100712.00,5617.13610,N,05223.63366,W,2,14,00.7,019.724,M,0.0,M,0.0,0000*4D
$INVTG,337.16,T,335.86,M,012.$PADCP,27,20140813,100708.85
$ sed 's/.*\($PADCP\)/\1/' plop
$INGGA,100712.00,5617.13610,N,05223.63366,W,2,14,00.7,019.724,M,0.0,M,0.0,0000*4D
$PADCP,27,20140813,100708.85
Si c'est ce que tu veux et pour que ce soit effectif dans le fichier (là la suppression ne se fait qu'à l'affichage et non dans le fichier), il te suffira de rajouter l'option "-i.bak" à sed :
sed -i.bak 's/.*\($PADCP\)/\1/' fichier
Ça modifie directement le fichier et ça fait une sauvegarde avec l'option .bak
C'est exactement ce qu'il me faut! :)
Comme je suis assez novice par contre, si j'ai un fichier avec des milliers de lignes qui se suivent comme dans mon exemple, est-ce que cette commande va reconnaitre tous les $PADCP dans le fichier?
Et à quoi sert exactement le plop?
En tout les cas merci beaucoup
Comme je suis assez novice par contre, si j'ai un fichier avec des milliers de lignes qui se suivent comme dans mon exemple, est-ce que cette commande va reconnaitre tous les $PADCP dans le fichier?
Et à quoi sert exactement le plop?
En tout les cas merci beaucoup