Supprimer ^M$

Fermé
Dinath Messages postés 1602 Date d'inscription vendredi 12 avril 2013 Statut Contributeur sécurité Dernière intervention 6 novembre 2021 - 24 oct. 2013 à 12:30
dubcek Messages postés 18757 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 19 décembre 2024 - 25 oct. 2013 à 16:04
Bonjour à tous,

Je cherche à supprimer le caractère "^M" reçu lors de la lecture d'un tableau Excel.


while IFS=' ' read c1 c2 ; do
...
done < fichier

En faisant un "cat -A" sur le fichier de sortie, on peut voir ceci :


-A INPUT -s ip^M -j ACCEPT$

J'ai utilisé :

sed 's/^M$//' fichier

Mais ça m'a tronqué des caractères, qui plus est j'aimerais bien inscrire directement l'ip sans ^M.

Merci pour votre aide.


6 réponses

Dinath Messages postés 1602 Date d'inscription vendredi 12 avril 2013 Statut Contributeur sécurité Dernière intervention 6 novembre 2021 218
24 oct. 2013 à 14:13
Re ;-)


dinath@Dinath:/media/Data/Sécurité/Firewall/iptables$ cat -A tmp
192.168.1.56^M$
dinath@Dinath:/media/Data/Sécurité/Firewall/iptables$ sed 's/^M//' tmp | cat -A
192.168.1.56^M$


Qu'est-ce que je fais mal ;-( ?
1
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 419
24 oct. 2013 à 14:16
Dans
 sed 's/^M//'
le
^M
est bien obtenu par la combinaison de touche
CTRL-v+CRTL-M
?

Sinon essaye avec
sed 's/\x0D//'
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 419
24 oct. 2013 à 13:01
Salut,

Alors
sed 's/^M$//'
(note le "$" à la fin), veut dire de supprimer un
^M
qui se trouverait à la fin d'une ligne ( d'où le
$
) ;-\

Pour ton cas il faut utiliser tout simplement
sed 's/^M//'
, la preuve :

$ cat fich -A
-A INPUT -s ip^M -j ACCEPT$

$ sed 's/^M//' fich | cat -A
-A INPUT -s ip -j ACCEPT$

PS. N'oublie pas le
g
si il y a plusieurs
^M
sur une seule ligne ;-)
0
Dinath Messages postés 1602 Date d'inscription vendredi 12 avril 2013 Statut Contributeur sécurité Dernière intervention 6 novembre 2021 218
Modifié par Dinath le 24/10/2013 à 15:08
Ah, il me semble que l'on en avait déjà parlé de ça ! CTRL+V et CTRL+M ne fonctionnement pas chez moi, mais là aussi ça me dit quelque chose je ferai des recherches.

J'ai essayé la version ASCII, et elle fonctionne... mais là aussi c'est sensible au copier/coller.


echo $col8 > tmp
c8='sed 's/\x0D//' tmp | cat'
echo "-A INPUT -s $c8 -j ACCEPT" >> $ficparefeu

Merci pour ton aide.

Je trouve ça un peu crade, Sed ne gère-t-il pas les remplacements à la volée ?

@Dinath_ | Contributeur Sécurité
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 419
24 oct. 2013 à 17:01
CTRL+V et CTRL+M ne fonctionnement pas chez mo
Où ça ? Dans un terminal ou dans un éditeur ?
Dans un éditeur c'est normal, par contre dans un terminal ça l'est moins ;-(


Sed ne gère-t-il pas les remplacements à la volée ?
Euh... si, normalement il suffit de rajouter l'option
-i.bak
pour modifier le fichier d'origine et par la même, créer une sauvegarde dudit fichier avec l'extension
.bak
.
0
Dinath Messages postés 1602 Date d'inscription vendredi 12 avril 2013 Statut Contributeur sécurité Dernière intervention 6 novembre 2021 218
25 oct. 2013 à 10:36
Au temps pour moi dans l'éditeur cela fonctionne, j'essayais de le mettre dans mon script.

Pour Seb, je pensais à ne pas passer par un fichier, mais directement traité le résultat depuis ma lecture dans l'Excel. Qu'en penses-tu ?
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 419
25 oct. 2013 à 11:34
mais directement traité le résultat depuis ma lecture dans l'Excel. Qu'en penses-tu ?
Que du mal ;-))

Je me demandais d'où venaient les
^M
, tu m'étonnes ;-(
De plus le traitement direct sur un fichier Excel, je ne pense pas que cela soit possible ;-\
0
Pierrecastor Messages postés 41473 Date d'inscription mercredi 5 novembre 2003 Statut Modérateur Dernière intervention 30 mai 2024 4 144
25 oct. 2013 à 11:35
Salut

C'est pas des gros blob binaire, les fichier MS office ?
0
dubcek Messages postés 18757 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 19 décembre 2024 5 623
25 oct. 2013 à 12:40
hello
c'est un tableau Excel ou un fichier texte .csv ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Dinath Messages postés 1602 Date d'inscription vendredi 12 avril 2013 Statut Contributeur sécurité Dernière intervention 6 novembre 2021 218
25 oct. 2013 à 15:17
@zipe31,


De plus le traitement direct sur un fichier Excel, je ne pense pas que cela soit possible ;-\

Pas dessus, mais directement à la volé.


Je lis l'Excel
Je récupère ma variable avec ^M
Je la sed, le ^M disparaît
J'envoie directement la commande dans avoir à utiliser un fichier texte

Désolé je dois mal m'exprimer ;-/

@dubcek,

Hellu, c'est un Excel converti en csv oui.

@Pierre,

Aucune idée, comme tout ce qu'il y a sur le pc je présume ;-)
0
Pierrecastor Messages postés 41473 Date d'inscription mercredi 5 novembre 2003 Statut Modérateur Dernière intervention 30 mai 2024 4 144
25 oct. 2013 à 15:21
Non, justement, un CSV est un fichier texte, tu peut le lire avec n'importe quel logiciel de texte et le traité en bash ou autre.

un .doc, par exemple est un fichier "compilé", c'est à dire qu'il faut un logiciel compatible pour le lire, et que tu ne doit pas pouvoir te balader dedans à coup de commande.

Par comparaison un fichier .odp, lui, n'est pas un format blob binaire, ce n'est une archive contenant notamment des fichier XML.

D'où l'intérêt de savoir si tu bossais sur un csv ou un xls
0
Dinath Messages postés 1602 Date d'inscription vendredi 12 avril 2013 Statut Contributeur sécurité Dernière intervention 6 novembre 2021 218
25 oct. 2013 à 15:30
En fait je pensais cela logique étant donné que l'on ne peut utiliser de délimiteur pour les fichiers interprétés par un logiciel comme Excel, pour ça que je n'ai pas précisé ;-/, et au fond je jugeais cela impertinent.


PS: Tu n'as pas du prendre ma touche d'humour pour le binaire ;-)
0
Pierrecastor Messages postés 41473 Date d'inscription mercredi 5 novembre 2003 Statut Modérateur Dernière intervention 30 mai 2024 4 144
25 oct. 2013 à 15:32
Non, effectivement, j'étaie passé à coté. ;-)
0
dubcek Messages postés 18757 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 19 décembre 2024 5 623
25 oct. 2013 à 16:04
autre commande pour supprimer ^M
tr -d '\r' < fichier.csv > nouveau.csv
0