A voir également:
- Transformer plusieurs lignes en une seule avec awk et séparateur ;
- Comment imprimer un tableau excel sur une seule page - Guide
- Fusionner plusieurs feuilles excel en une seule - Guide
- Transformer une image en icone - Guide
- Partager photos en ligne - Guide
- Site de vente en ligne particulier - Guide
4 réponses
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
Modifié le 28 juin 2020 à 09:16
Modifié le 28 juin 2020 à 09:16
Salut,
Avec sed…
Solution 1 :
Solution 2 :
;-)
Avec sed…
$ cat f1
#?BEGIN_SITE
alias=***
ip=***
...
..
#?END_SITE
#?BEGIN_SITE
alias=***
ip=***
...
..
#?END_SITE
Solution 1 :
$ sed '/^#?BEGIN/{:z;N;/#?END_/!bz;s/\n/;/g}' f1
#?BEGIN_SITE;alias=***;ip=***;...;..;#?END_SITE
#?BEGIN_SITE;alias=***;ip=***;...;..;#?END_SITE
Solution 2 :
$ sed '/^#?BEGIN/{n;:z;N;/#?END_/!bz;s/\n/;/g;s/;#/\n#/}' f1
#?BEGIN_SITE
alias=***;ip=***;...;..
?END_SITE
#?BEGIN_SITE
alias=***;ip=***;...;..
#?END_SITE
;-)
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 622
29 juin 2020 à 14:37
29 juin 2020 à 14:37
hello
sur Solaris, utiliser nawk
sur Solaris, utiliser nawk
$ nawk '/END/ {c=RS} /BEGIN|END/ {print c $0; c=""; next} {printf $0 ";"}' fichier
#?BEGIN_SITE
alias=***;ip=***;...;..;
#?END_SITE
#?BEGIN_SITE
alias=***;ip=***;...;..;
#?END_SITE
$
$ nawk '{printf $0 ";"} /END/ {print ""}' fichier
#?BEGIN_SITE;alias=***;ip=***;...;..;#?END_SITE;
#?BEGIN_SITE;alias=***;ip=***;...;..;#?END_SITE;
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 622
29 juin 2020 à 15:46
29 juin 2020 à 15:46
sans ; en fin de ligne
$ nawk '{c=";"} /END/ {c=RS} {printf $0 c}' fichier
#?BEGIN_SITE;alias=***;ip=***;...;..;#?END_SITE
#?BEGIN_SITE;alias=***;ip=***;...;..;#?END_SITE
dofre114
>
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
1 juil. 2020 à 16:08
1 juil. 2020 à 16:08
merci beaucoup ça fonctionne, j'aimerai supprimer #?BEGIN_SITE et #?END_SITE j ai pensé untiliser ta première commande et utiliser grep -v mais si on peut faire ça sur une seule ligne c'est plus propre avec nawk.
j'aimerai avoir également une premiére ligne de ce type:
alias;ip; ***** correspondant à chaque ligne avant le =
et ensuite toutes les lignes avec les résultats correspondant à ce qui se trouve aprés le =
je voulais utiliser un pipe et remettre un awk derriére mais il y a peut être possibilité de tout faire sur la même commande ?
ça donnerait :
alias;ip;port;***;
vh-gr00;10.198.87.12;2343;*****
vh-gr02;10.198.78.13;2453;****
j'aimerai avoir également une premiére ligne de ce type:
alias;ip; ***** correspondant à chaque ligne avant le =
et ensuite toutes les lignes avec les résultats correspondant à ce qui se trouve aprés le =
je voulais utiliser un pipe et remettre un awk derriére mais il y a peut être possibilité de tout faire sur la même commande ?
ça donnerait :
alias;ip;port;***;
vh-gr00;10.198.87.12;2343;*****
vh-gr02;10.198.78.13;2453;****
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 622
>
dofre114
2 juil. 2020 à 10:11
2 juil. 2020 à 10:11
montre un exemple de données
Merci beaucoup , j'avais pas creuser sed , j'ai juste un petit problème, je n'avais pas précisé je suis sur solaris j'ai un label too long lorsque je lance la commande, je suis entrain de chercher apparemment il faut découper le sed.
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
29 juin 2020 à 07:37
29 juin 2020 à 07:37
Dans un premier temps, essaies de mettre la syntaxe dans un script qu'on appellera depuis la commande.
1 - script.sed :
Exécution :
2 - script_2.sed :
Exécution :
Si ça ne marche pas, on essaiera d'autre(s) solution(s)…
1 - script.sed :
$ cat script.sed
/^#?BEGIN/ {
n
:z
N
/#?END_/ !b z
s/\n/;/g
s/;#/\n#/
}
Exécution :
$ sed -f script.sed f1
#?BEGIN_SITE
alias=***;ip=***;...;..
#?END_SITE
#?BEGIN_SITE
alias=***;ip=***;...;..
#?END_SITE
2 - script_2.sed :
$ cat script_2.sed
/^#?BEGIN/ {
:z
N
/#?END_/ !b z
s/\n/;/g
}
Exécution :
$ sed -f script_2.sed f1
#?BEGIN_SITE;alias=***;ip=***;...;..;#?END_SITE
#?BEGIN_SITE;alias=***;ip=***;...;..;#?END_SITE
Si ça ne marche pas, on essaiera d'autre(s) solution(s)…
ça fonctionne trés bien
/^#?BEGIN/ {
:z
N
/#?END_/ !b z
s/\n/;/g
}
s/#?BEGIN_SITE;//
s/;#?END_SITE//
s/='/=/g
s/';/;/g
ça me donne :
s_alias=*******;s_proto_ident=******;s_protocol=SFTP;s_version=;s_comments=******;s_group=GDEFAULT;s_username=;s_snd_msg=;s_local_site=N;s_init_sender=Y;s_resp_sender=Y;s_init_receiver=Y;s_resp_receiver=Y;s_old_password=;s_old_password2=;s_password=;s_password2=;s_check_password=;s_check_password2=;s_restart_allowed=N;s_resync_allowed=N;s_eerp_style=;s_acknowledgment_option=ACK_UNKNOWN;s_special_logic=N;s_get_appli_method=AIE;s_trans_mode=NONE;s_ftp_restart_type=BOTH;s_ftp_data_struct=NONE;s_ftp_passive_mode=NONE;s_change_data_addr=N;s_poll_option=N;s_poll_responder=N;s_poll_interval=0;s_poll_conn_max=0;s_nack_option=N;s_permanent_conn=N;s_conn_hold_delay=0;s_heartbeat_rate=0;s_attach_extract_file=Y;s_pop3_auth_method=BASIC;s_oftp_auth_method=NONE;s_error_mail_disposal=undefined;s_smtp_auth_method=NONE;s_mail_address=;s_newline_convention= ;s_max_upload_rate=0;s_max_download_rate=0;s_max_upload_requests_rate=0;s_max_download_requests_rate=0;s_command_sensitivity=0;s_max_upload_file_size=0;s_ftpcs_list_fields=DISABLED;s_ftp_disable_xfb_commands=N;s_ftp_options=0;s_retry_count_max=10;s_retry_delay_min=10;s_retry_delay_max=600;s_init_conn_max=10;s_resp_conn_max=10;s_dir_path=;s_data_size_max=4000;s_data_window=0;s_check_window=0;s_use_etb5_compresion=N;s_login_ident=grh0;s_login_password=*****;s_login_type=Anonymous;s_login_url=;s_login_method=GET;s_login_user_param=;s_is_monitor=N;s_partner_loc_alias=;s_check_login_ident=*****;s_check_login_password=;s_comm_type=TCPIP;s_dest_address=*******;s_org_address=;s_net_proxy=;s_ft_proxy=;s_network_security_option=SSH;s_xpp_entity_name=;s_xpp_object_type=;s_tls_sprof_in=;s_tls_sprof_out=;s_xsr_term_type=NONE;s_xsr_allowed_ra_list=;s_bypass_xsr=N;s_user_data=;s_comm_options=;s_logon=;s_logon_code=U;s_ssh_profile=SFTP_PASSWORD;s_local_private_key_alias=;s_local_certificate_alias=;s_remote_public_key_alias=;s_remote_public_key_group=;s_auth_obj_type=NONE;s_auth_obj_name=;s_auth_obj_password=;s_remote_subject_cert_alias=;s_remote_issuer_cert_alias=;s_remote_subject_name_pattern=;s_remote_issuer_name_pattern=;s_comm_type_1=U;s_dest_address_1=;s_org_address_1=;s_net_proxy_1=;s_ft_proxy_1=;s_user_data_1=;s_comm_options_1=;s_logon_1=;s_logon_code_1=U;s_comm_type_2=U;s_dest_address_2=;s_net_proxy_2=;s_ft_proxy_2=;s_org_address_2=;s_user_data_2=;s_comm_options_2=;s_logon_2=;s_logon_code_2=U;s_comm_type_3=U;s_dest_address_3=;s_org_address_3=;s_net_proxy_3=;s_ft_proxy_3=;s_user_data_3=;s_comm_options_3=;s_logon_3=;s_logon_code_3=U;s_sw_init_xfer_max=0;s_sessions_max=0;s_init_mode=Y;s_resp_mode=Y;s_trace_mode=N;s_poll_mode=N;s_sentinel_transfer_filter=UNDEFINED;s_param1=;s_param2=;s_use_trade_unpacking=undef'
maintenant j'aimerai créer une première ligne dans mon fichier final :
s_alias;s_proto_ident;s_protocol;s_version;s_comments;****
et en dessous les données
/^#?BEGIN/ {
:z
N
/#?END_/ !b z
s/\n/;/g
}
s/#?BEGIN_SITE;//
s/;#?END_SITE//
s/='/=/g
s/';/;/g
ça me donne :
s_alias=*******;s_proto_ident=******;s_protocol=SFTP;s_version=;s_comments=******;s_group=GDEFAULT;s_username=;s_snd_msg=;s_local_site=N;s_init_sender=Y;s_resp_sender=Y;s_init_receiver=Y;s_resp_receiver=Y;s_old_password=;s_old_password2=;s_password=;s_password2=;s_check_password=;s_check_password2=;s_restart_allowed=N;s_resync_allowed=N;s_eerp_style=;s_acknowledgment_option=ACK_UNKNOWN;s_special_logic=N;s_get_appli_method=AIE;s_trans_mode=NONE;s_ftp_restart_type=BOTH;s_ftp_data_struct=NONE;s_ftp_passive_mode=NONE;s_change_data_addr=N;s_poll_option=N;s_poll_responder=N;s_poll_interval=0;s_poll_conn_max=0;s_nack_option=N;s_permanent_conn=N;s_conn_hold_delay=0;s_heartbeat_rate=0;s_attach_extract_file=Y;s_pop3_auth_method=BASIC;s_oftp_auth_method=NONE;s_error_mail_disposal=undefined;s_smtp_auth_method=NONE;s_mail_address=;s_newline_convention= ;s_max_upload_rate=0;s_max_download_rate=0;s_max_upload_requests_rate=0;s_max_download_requests_rate=0;s_command_sensitivity=0;s_max_upload_file_size=0;s_ftpcs_list_fields=DISABLED;s_ftp_disable_xfb_commands=N;s_ftp_options=0;s_retry_count_max=10;s_retry_delay_min=10;s_retry_delay_max=600;s_init_conn_max=10;s_resp_conn_max=10;s_dir_path=;s_data_size_max=4000;s_data_window=0;s_check_window=0;s_use_etb5_compresion=N;s_login_ident=grh0;s_login_password=*****;s_login_type=Anonymous;s_login_url=;s_login_method=GET;s_login_user_param=;s_is_monitor=N;s_partner_loc_alias=;s_check_login_ident=*****;s_check_login_password=;s_comm_type=TCPIP;s_dest_address=*******;s_org_address=;s_net_proxy=;s_ft_proxy=;s_network_security_option=SSH;s_xpp_entity_name=;s_xpp_object_type=;s_tls_sprof_in=;s_tls_sprof_out=;s_xsr_term_type=NONE;s_xsr_allowed_ra_list=;s_bypass_xsr=N;s_user_data=;s_comm_options=;s_logon=;s_logon_code=U;s_ssh_profile=SFTP_PASSWORD;s_local_private_key_alias=;s_local_certificate_alias=;s_remote_public_key_alias=;s_remote_public_key_group=;s_auth_obj_type=NONE;s_auth_obj_name=;s_auth_obj_password=;s_remote_subject_cert_alias=;s_remote_issuer_cert_alias=;s_remote_subject_name_pattern=;s_remote_issuer_name_pattern=;s_comm_type_1=U;s_dest_address_1=;s_org_address_1=;s_net_proxy_1=;s_ft_proxy_1=;s_user_data_1=;s_comm_options_1=;s_logon_1=;s_logon_code_1=U;s_comm_type_2=U;s_dest_address_2=;s_net_proxy_2=;s_ft_proxy_2=;s_org_address_2=;s_user_data_2=;s_comm_options_2=;s_logon_2=;s_logon_code_2=U;s_comm_type_3=U;s_dest_address_3=;s_org_address_3=;s_net_proxy_3=;s_ft_proxy_3=;s_user_data_3=;s_comm_options_3=;s_logon_3=;s_logon_code_3=U;s_sw_init_xfer_max=0;s_sessions_max=0;s_init_mode=Y;s_resp_mode=Y;s_trace_mode=N;s_poll_mode=N;s_sentinel_transfer_filter=UNDEFINED;s_param1=;s_param2=;s_use_trade_unpacking=undef'
maintenant j'aimerai créer une première ligne dans mon fichier final :
s_alias;s_proto_ident;s_protocol;s_version;s_comments;****
et en dessous les données
- ;****;*****;***** afin d'avoir un fichier csv directement lisible