Forum Programmation.shell Sed et les caractères spéciaux

Posté par . Licence CC by-sa
Tags :
0
17
sept.
2017

Bonjour à tous.tes,

Je travaille sur de gros fichiers textes dans lesquels je souhaite garder certains caractères et en supprimer d'autres.
Les caractères à supprimer ne sont pas connus d'avance mais après une opération de filtrage je les sauvegarde dans une variable.

La variable qui contient les caractères à supprimer est, dans le cas qui m'intéresse, égale à :
°,!/.·"«»()[]@…0123456789

Voici le code que j'ai tenté d'utiliser pour supprimer tous ces caractères de mon gros fichier texte mais qui ne (...)

Forum général.général [sed] Remplacer du texte contenu dans une variable et contenant des () et *

Posté par (page perso) . Licence CC by-sa
1
20
mai
2017

Edit du 22/05/17 à 12h30 : J'en suis là

Quand je fais :

sed -i -e "s/TRUC:(1000)\*80/TRUC:(1000)\*99/" fichier

Le fichier est correctement modifié. Mais avec le code suivant, ça ne marche pas, le fichier n'est pas modifié :

old_value="(1000)\*80"
new_value="(1000)\*99"
sed -i -e "s/TRUC:'$old_value'/TRUC:'$new_value'/" fichier

Post original :

J'ai plusieurs fichiers de config. à modifier comme suit :

config.js :

param_un:valeur_1,
param_deux:valeur_2,

Pas trop dur :

param_a_modifier="param_un"
ancienne_valeur="valeur_1"
nouvelle_valeur="valeur_3"
sed -i -e 's/${param_a_modifier}:${ancienne_valeur}/${param_a_modifier}:${nouvelle_valeur/' config.js

Jusque là tout va bien. Sauf (...)

Forum Programmation.shell CSH : Remplacement de mots dans un fichier à partir d'un fichier CSV de correspondance

Posté par . Licence CC by-sa
Tags :
0
28
avr.
2016

Bonjour,

J'ai un fichier XML évolutif au sein duquel j'aimerais remplacer des noms de ville à partir d'identifiant contenu dans une table de correspondance. pour chaque occurence du fichier.

exemple : table de correspondance

PARIS;75000
BORDEAUX;33000

J'étais parti sur un sed mais j'ai beau creuser je ne trouve pas.

Quelqu'un peut il m'aider SVP.
A votre disposition si vous avez besoin d'informations complémentaires.

J'ai déjà la boucle

while read line
do
var1=$( echo "$line" | sed -n -E 's/.Station="(. (...)

Travailler avec des expressions rationnelles

83
8
fév.
2016
Technologie

Les expressions rationnelles sont un outil d’analyse de texte par un ordinateur. Elles permettent de décrire des enchaînements de caractères d’une complexité suffisamment grande pour être réellement utiles, mais suffisamment faible pour être implémentées efficacement. Elles sont d’une importance capitale pour le théoricien des langages comme pour l’UNIX power user.

Dans cette dépêche, nous :

  • décrivons brièvement la notion abstraite d’expression rationnelle et recensons les implémentations les plus courantes sur un système Unix ;
  • présentons quelques commandes permettant de rechercher des motifs décrits par une expression rationnelle dans un texte, réécrire des fichiers automatiquement ou transformer et analyser des fichiers structurés automatiquement en utilisant des expressions rationnelles ;
  • montrons comment améliorer votre productivité avec Emacs grâce aux expressions rationnelles.

Dans cette dépêche, nous allons nous pencher sur les expressions rationnelles (souvent nommées abusivement expressions régulières suite à une traduction littérale de regular expression). Elles permettent de représenter formellement un motif de recherche, par exemple : un caractère alphabétique majuscule suivi de quatre caractères minuscules, puis deux chiffres et un point à la fin. Les expressions rationnelles représentent un outil puissant pour qui sait les utiliser à bon escient mais nécessitent une phase d’apprentissage non négligeable. La diversité des moteurs et des syntaxes n’aide pas non plus à leur simplicité, et les confusions entre les différents outils peuvent parfois donner des résultats surprenants.

Forum Programmation.shell Addition d'un nombre d'occurences selon une chaine de caractère

Posté par . Licence CC by-sa
Tags :
0
13
août
2015

Bonjour,

Je suis bloqué sur un petit script en shell. Je récupère dans un fichier txt des entrées comme ci dessous :

120 facebook.fr
32 linuxfr.org

Lorsque je lance mon script avec le cron, j'ai du coup la même chose mais plusieurs fois puisque les résultats s'ajoutent au fur et à mesure du resultat.txt :

120 facebook.fr
32 linuxfr.org
64 facebook.fr
12 linuxfr.org

Je souhaiterai donc pouvoir additionner les nombre d'occurences quand les noms de domaines sont identiques, soit au (...)

Journal Lire de fichiers de configuration depuis un script shell

Posté par (page perso) . Licence CC by-sa
25
5
juin
2015

La petite technique shell du vendredi. Pour lire un fichier de configuration du style INI depuis un script shell, on peut utiliser le petit script sed suivant

1 {
  x
  s/^/default/
  x
}

/^#/n

/^\[/ {
  s/\[\(.*\)\]/\1/
  x
  b
}

/=/ {
  s/^[[:space:]]*//
  s/[[:space:]]*=[[:space:]]*/|/
  G
  s/\(.*\)\n\(.*\)/\2|\1/
  p
}

Il transforme

    # last modified 1 April 2001 by John Doe
    [owner]
    name=John Doe
    organization=Acme Widgets Inc.

    [database]
    # use IP address in case network name resolution is not working
    server=192.0.2.62
    port=143
(...)

Forum Programmation.autre Sed sur plusieurs lignes

Posté par . Licence CC by-sa
2
26
août
2014

Bonjour,

Utilisateur de sed depuis des lustres… il y a un truc que je n'arrive pas à faire… et qui me chicane vraiment. J'ai toujours contourné le problème avec du Perl, mais, cette fois, c'est pour de l'embarqué (en fait une raspberry pi que je ne contrôle pas) et je n'ai pas de Perl à disposition.

Le problème

J'ai de nombreux fichiers qui ont un nombre variable de lignes de la forme:

%!PostProc(Xhtml): 'bidule' 'capsule'

Mais il peut y avoir (...)

Forum Programmation.shell Isoler une chaine de caractère et compter son nombre d'occurrences

Posté par . Licence CC by-sa
Tags :
1
4
juin
2014

Hello,

Je cherche un moyen d'extraire d'une capture de mon trafic DNS certains sites et d'en afficher le nombre d’occurrence.

Le fichier que je récupère est sous ce format :

14:15:37.837411 IP 109.215.228.235.23582 > 81.253.149.2.53: 25335+ A? b.fc.namequery.com. (36)
14:15:37.837930 IP 80.10.202.65.30568 > 209.53.113.4.53: 59709 [1au] A? b.fc.namequery.com. (47)
14:15:44.746399 IP 109.215.90.49.1024 > 81.253.149.2.53: 7376+ A? search.namequery.com. (38)
14:15:49.456342 IP 82.121.161.41.1024 > 81.253.149.1.53: 26292+ A? search.namequery.com. (38)
14:15:49.456865 IP 80.10.202.103.3499 > 209.53.113.6.53: 27871 [1au] A? search.namequery.com. (49)
14:15:53.477188 IP 90.21.150.38.1024 (...)

Forum Programmation.shell enlever les fins de ligne du résultat de curl

Posté par . Licence CC by-sa
Tags :
1
16
mai
2014

Bonjour.

Je souhaite récupérer le retour d'une API web interne via curl, pour la comparer à un résultat prédéterminé ( en fait, de jouer des tests sans me casser les pieds à devoir me retaper le copier/coller partiel en fonction du serveur ni devoir lire le résultat pour être sûr qu'il est bon ).
Donc, j'ai créé un fichier contenant mes listes de paramètres et un script qui appelle l'URI voulue ( un serveur ou l'autre, principalement ) en ajoutant (...)

Forum Programmation.shell Utiliser la sortie d'une commande comme chaîne de recherche de awk

Posté par . Licence CC by-sa
Tags :
1
23
déc.
2013

Bonjour.

Je cherche à obtenir le "device file" correspondant à un chemin (sur une clé USB, en l'occurrence).

Disons que mon chemin est /media/cle/rep1/rep2/rep3/fichier. (J'ai accès à ça facilement dans Thunar via les actions personnalisées.)

Je veux :

  • extraire /media/cle
  • chercher ça dans /proc/mounts
  • en déduire /dev/sdb1 (par exemple)

Partant de /media/cle, je peux réaliser les étapes 2 et 3 avec awk :

awk '/\/media\/cle/ {print $1}' /proc/mounts

J'arrive à extraire /media/cle avec sed :

echo /media/cle/rep1/rep2/rep3/fichier | sed -e 
(...)

Journal Grabuge à la FSF : GnuTLS quitte le projet GNU et sed perd son mainteneur

Posté par (page perso) . Licence CC by-sa
44
23
déc.
2012

Peuple de LinuxFr, l'heure est grave.

Alors que ploum trolle sans vergogne sur l'intégrisme de la FSF, des critiques bien plus concrètes, informées et graves se font jour en ce mois de décembre.

D'abord, le 10 décembre, Nikos Mavrogiannopoulos annonce que le projet GnuTLS quitte l'égide de GNU après 12 ans. En cause, « un désaccord majeur avec les décisions et pratiques de la FSF ». Le site LWN a publié un article sur le sujet cette semaine, chroniquant cette tentative de (...)

Forum Programmation.autre sed et pattern

Posté par (page perso) .
Tags :
0
3
nov.
2012

Bonjour,
Je cherche à isoler dans une ligne un motif du style 0000:0000
Où suis-je dans l'erreur quand j'utilise la commande qui suit ?

echo dds[0000]:fhers[080e:0780]dfsgdg |sed 's/^*\[\([0-9a-f][0-9a-f][0-9a-f][0-9a-f]:[0-9a-f][0-9a-f][0-9a-f][0-9a-f]\)]*$/\1/'

Sachant que

echo dds[0000]:fhers[080e:0780]dfsgdg|sed 's/\[\([0-9a-f][0-9a-f][0-9a-f][0-9a-f]:[0-9a-f][0-9a-f][0-9a-f][0-9a-f]\)]//'

efface comme escompté le motif …