Remplacement de caractere dans une chaine
RésoluGHISLINO Messages postés 214 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
J'ai le texte ci-dessous je souhaiterais remplacer avec awk les 3 dernières virgules par un tiret du 6 "-" merci d'avance
fichier source
07/07/2023 10:38,07/07/2023 10:38,",",",0"",degraded_cells=WCDMA:339682,339725,375868
08/07/2023 07:00,08/07/2023 07:00,",",",0"",faulty_cells=WCDMA:347911,347922,347933
08/07/2023 07:00,08/07/2023 07:00,",",",0"",faulty_cells=GSM:347911,347922
08/07/2023 07:00,08/07/2023 07:00,",",",0"",faulty_cells=LTE:347911,347922,347933
fichier de sortie
07/07/2023 10:38,07/07/2023 10:38,",",",0"",degraded_cells=WCDMA:3396823-39725-375868
08/07/2023 07:00,08/07/2023 07:00,",",",0"",faulty_cells=WCDMA:347911-347922-347933
08/07/2023 07:00,08/07/2023 07:00,",",",0"",faulty_cells=GSM:347911-347922
08/07/2023 07:00,08/07/2023 07:00,",",",0"",faulty_cells=LTE:347911-347922-347933
Windows / Chrome 114.0.0.0
11 réponses
-
hello
l y a une différence ligne 1 entre source et sortie 339725 et 39725
j'ai enlevé les espaces
$ awk 'BEGIN {FS=OFS=":"} {gsub(",", "-", $NF); print $0}' source 07/07/2023 10:38,07/07/2023 10:38,",",",0"",degraded_cells=WCDMA:339682-339725-375868 08/07/2023 07:00,08/07/2023 07:00,",",",0"",faulty_cells=WCDMA:347911-347922-347933 08/07/2023 07:00,08/07/2023 07:00,",",",0"",faulty_cells=GSM:347911-347922 08/07/2023 07:00,08/07/2023 07:00,",",",0"",faulty_cells=LTE:347911-347922-347933 -
Hello Dubcek,
Merci beaucoup pour votre retour , cela fonctionne bien avec le fichier source que j'ai collé dans mon premier message.
Cependant si j'ai le fichier source Csv qui est désorganiser , la ligne de commande ne marche pas. j 'ai joint un template ci-dessous , s'il vous plait pouvez y jeter un coup d'oeil.
Merci d'avance
" 768872581,PLMN-PLMN/MRBTS-191/EQM_R-1/APEQM_R-1/ALD_R-3/RETU_R-1 , 5, 1, 99,07-07-2023 10:38:49, , , 1, , , 7113, 2,19a9155a9bbcfd4fed1b57d26dc84a86d7682034 , 9.2234E+18,BASE STATION ANTENNA LINE PROBLEM ,07-07-2023 10:38:49,07-07-2023 10:38:51, , 0, ,degraded_cells=WCDMA:339682,339725,375868 ,RET Antenna control failure ,1843 unitName=TILT path=/SMOD_R-1/bbext1/BBMOD_R-1/rf3/RMOD_R-1/ret/ALD_R-3/RETU_R-1 serial_no=AM160819201803-Y3 additionalFaultID=1843 RETU-1 , , , , 0, 9714482, 9714482, 0, 0,07/07/23 09:38:51.749094 , 0, 0, , ,MRBTS-191/EQM_R-1/APEQM_R-1/ALD_R-3/RETU_R-1 ,PLMN-PLMN/MRBTS-191 , 0, , ,MRBTS:MRBTS , 2,PLMN-PLMN/MRBTS-191 , 1,31-12-9999 23:59:59,07/07/23 10:38:49.000000 +01:00 ,07/07/23 10:38:49.000000 +01:00 - -" " 769014358,PLMN-PLMN/MRBTS-1952/EQM_R-1/APEQM_R-1/RMOD_R-1 , 5, 1, 99,07-07-2023 18:38:36, , , 1, , , 7116, 1,5706efd545d41ae1c0e2ea4157b2e684f8866847 , 9.2234E+18,BASE STATION SERVICE PROBLEM ,07-07-2023 18:38:36,07-07-2023 18:38:54, , 0, ,faulty_cells=GSM:all" "LTE:1,2,3 ,No connection to unit ,10 unitName=FR path=/SMOD_R-2(Left)/bbext1/BBMOD_R-4/rf2/RMOD_R-1 additionalFaultID=10 RMOD-1 , , , , 0, 9495972, 9495972, 0, 0,07/07/23 17:38:54.869257 , 0, 1, , ,MRBTS-1952/EQM_R-1/APEQM_R-1/RMOD_R-1 ,PLMN-PLMN/MRBTS-1952 , 0, , ,MRBTS:MRBTS , 2,PLMN-PLMN/MRBTS-1952 , 1,31-12-9999 23:59:59,07/07/23 18:38:36.000000 +01:00 ,07/07/23 18:38:36.000000 +01:00 - -" " 769136441,PLMN-PLMN/MRBTS-43911/EQM_R-1/APEQM_R-1/RMOD_R-1 , 5, 1, 99,08-07-2023 07:00:00, , , 1, , , 7116, 1,7ce97cddf53b7f5efda7d7beca47e4314245ef09 , 9.2234E+18,BASE STATION SERVICE PROBLEM ,08-07-2023 07:00:00,08-07-2023 07:00:02, , 0, ,faulty_cells=WCDMA:347911,347922,347933,347974,347985,347996,529707,529718,529729 ,No connection to unit ,10 unitName=FRGU path=/SMOD_R-1/rf_ext1/RMOD_R-1 serial_no=K9170442911 additionalFaultID=10 RMOD-1 , , , , 0, 6790101, 6790101, 0, 0,08/07/23 06:00:02.556107 , 0, 0, , ,MRBTS-43911/EQM_R-1/APEQM_R-1/RMOD_R-1 ,PLMN-PLMN/MRBTS-43911 , 0, , ,MRBTS:MRBTS , 2,PLMN-PLMN/MRBTS-43911 , 1,31-12-9999 23:59:59,08/07/23 07:00:00.000000 +01:00 ,08/07/23 07:00:00.000000 +01:00 - -" -
la virgule étant séparateur de champ, je ne vois pas bien les 3 dernières à modifier
-
Bonsoir Dubcek,
les éléments à modifier commencent toujours par les trois mots ci-dessous
affected_cells=
faulty_cells=
degraded_cells=Merci
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
,faulty_cells=WCDMA:347911,347922,347933,347974,347985,347996,529707,529718,529729là, faut-il remplacer toutes les , ou les 3 dernières ?
-
Hello Dubcek,
Désolé pour la réponse tardive j'étais en déplacement,
Il faudra remplacer toutes la sequences des , par le "-".
Merci
-
j'ai une solution sed
$ sed -e :1 -e 's@\(cells.*\),\(.*[ \t]\)@\1-\2@;t1' in > out
dans in
,degraded_cells=WCDMA:339682,339725,375868
,faulty_cells=GSM:all" "LTE:1,2,3
,faulty_cells=WCDMA:347911,347922,347933,347974,347985,347996,529707,529718,529729dans out
,degraded_cells=WCDMA:339682-339725-375868
,faulty_cells=GSM:all" "LTE:1-2-3
,faulty_cells=WCDMA:347911-347922-347933-347974-347985-347996-529707-529718-529729 -
Bonjour dubcek,
Merci beaucoup , c est parfait!!
-
Bonjour dubcek,
sed -e :1 -e 's@\(cells.*\),\(.*[ \t]\)@\1-\2@;t1' in > outle code marche bien mais cependant il prend enormement de temps un fichier volumineux de 142 lignes.
Please il ya t'il une solution pour améliorer le temps de traitement?
Merci d'avance
-
sed est rapide, c'est bizarre
c'est la même structure de fichier qu'au post #2 ?
-
Hello Dubcek ,
désolé j'etais souffrant , ça va mieux now.
pour répondre à ta question oui c est la même structure. et je ne comprend pourquoi cela prend autant de temps pour le traitement.
merci