J'ai un contenu de fichier comme celui-ciComment rechercher et remplacer dans une ligne à l'aide sed
sélectionnez b.id comme cli_id, b.login comme cli_login, b.pname comme cli_name, b.cname comme cli_company, b.phone comme cli_phone, b.email comme cli_email, (select (valeur/1.048.576) à partir des limites où limit_name = 'disk_space' et id = b.limits_id) comme Client_Package, b.cr_date, (sélectionner FROM_UNIXTIME (valeur, "% Y-% m-% d") à partir de Limites où nom_limite = 'expiration' et id = b.limits_id) en tant que Client_expire, Si (b.status = 0, 'Actif', 'Inactif') Cli_Status, a.name as dom_name, Si (a.status = 0, 'Actif', 'Inactif') comme Dom_Package, a.cr_date comme dom_create, (sélectionnez FROM_UNIXTIME (valeur, "% Y-% m-% d") depuis Limites où limit_name = ' expiration » et id = a.limits_id) comme dom_expire, (sélectionner (valeur/1.048.576) à partir des limites où limit_name = 'disk_space' et id = a.limits_id) comme Dom_Package, round ((a.real_size/1048576)) en tant que Dom_usage de domaines a, clients b où (sélectionnez FROM_UNIXTIME (valeur, "% Y-% m-% d") de Limites où nom_limite = 'expiration' et id = a.limits_id et (FROM_UNIXTIME (valeur, " % Y-% m-% d ") entre '2011-08-01' et '2011-12-01')) et a.cl_id = b.id groupe par a.id;
tout cela vient en une seule ligne
dans ce que je veux remplacer la partie seule date dans ce format
entre « 2011-08-01 » et « 2011-12- 01 '
Le script s'exécute tous les vendredis, supposons que je l'exécute le 10ème mois signifie.
le script besoin de changer la valeur dans le fichier comme celui-ci
entre « 2011-09-01 » et « 2012-01-01 »
chaque fois que le seul mois besoin changer dans ce format
entre '-1 mois du mois courant' et 'mois en cours + 3 mois'
sed -i 's/between '2011-08-01' and '2011-12-01'/'between '$(date --date="- 1 month" +%Y-%m)-01' and '$(date --date="+ 3 months" +%Y-%m)-01'/g file1
dans ce code iam essayant de trouver et remplacer
mais montre cette erreur
sed: expression -e # 1, char 44: la commande `s sans terminaison
Quelle erreur iam peut-on expliquer?
Salut, cette commande ne fonctionne pour me..it donne une sortie infiniete de intergers utilisant ctr + c que j'ai besoin de briser cette sortie –
sed -i « s/entre '[0-9 -] *' et '[0-9 -] *'/entre '$ (date -v'-1m' +% Y-% m-01) 'et' $ (date -v ' + 3m '+% Y-% m-01)'/g "/var/tmp/p.sql date: option invalide - 'v' Essayez' date --help 'pour plus d'informations. date: option non valide - 'v' Essayez 'date --help 'pour plus d'informations. –