Question Traitement de fichier

Plus d'informations
il y a 12 ans 6 mois #15700 par Albert
Traitement de fichier a été créé par Albert
Salut,

J'ai un fichier qui contient des lignes de types :

TEST.WORLD =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(Host = LUXS00)(Port = 1521))
)
(CONNECT_DATA = (SID = TEST))
)

CORE.WORLD =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(Host = LUXS001)(Port = 1521))
)
(CONNECT_DATA = (SID = CORE))
)

################################

FRV =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = LUXS00111.u.net.intra)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = FRV)
)
)

sur de grandes pages.
Ce que je voudrais c'est :

TEST.WORLD = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(Host = LUXS00)(Port = 1521))) (CONNECT_DATA = (SID = TEST))
)
CORE.WORLD = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(Host = LUXS001)(Port = 1521))) CONNECT_DATA = (SID = CORE))
)

ect, un bloc sur une ligne enfaite (je ne sais pas si on voit bien dans la quote à cause du formatage web)
Donc concaténer les ligne si elles ne contiennent pas de '#' ou ne sont pas vide.
J'ai éssayé 2 3 trucs déjà mais ca ne marche pas comme je voudrais
[code:1]param([string]$file)
Get-Content $file | foreach {
if($_ -match \"#\" -or $_ -eq \"$null\"«»){Add-Content file2.txt \"$_`n\"}
else{$out = $out + $_}
}Add-Content file2.txt $out
[/code:1]

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 12 ans 6 mois #15701 par Albert
Réponse de Albert sur le sujet Re:Traitement de fichier
J'ai tenté quelque chose comme ça aussi qui ne marche pas :
[code:1]param([string]$file)
$content = get-content $file
foreach($i in $content)
{
if($i -match \"#\")
{
$out = $out + \"`r\" + $i
}
else{$out = $out + $i}
}$out | out-file file2.txt[/code:1]

Mais il ne me fait aucun retour à la ligne alors qu'il trouve des \&quot;#\&quot; ...<br><br>Message édité par: FlqX, à: 23/08/13 09:05

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 12 ans 6 mois #15704 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:Traitement de fichier
Essaie ceci :
[code:1]
$File='c:\temp\MyTSName.ora'
$File2='c:\temp\MyTSName2.ora'

$t=@'
TEST.WORLD =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(Host = LUXS00)(Port = 1521))
)
(CONNECT_DATA = (SID = TEST))
)

CORE.WORLD =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(Host = LUXS001)(Port = 1521))
)
(CONNECT_DATA = (SID = CORE))
)

################################

FRV =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = LUXS00111.u.net.intra)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = FRV)
)
)
'@ &gt; $file


function Merge-OraAddressName {
param(
[parameter(Mandatory=$True,ValueFromPipeline=$True)]
$Line
)

begin {$out=''}
Process {
$Line=$_
write-Debug \&quot;$line\&quot;
if($Line -match \&quot;#\&quot;«»)
{
write-Debug \&quot;`t Send\&quot;
$out
\&quot;`r`n$Line`r`n\&quot;
$out=''
}
else
{
write-Debug \&quot;`t Add\&quot;
$out += $Line
}
}#process
end {$out}
}#Merge-OraAddressName

$Result=Get-content $file|
Merge-OraAddressName
$Result| out-file $file2

Get-content $file|
Merge-OraAddressName|
out-file $file2
[/code:1]
Note l'usage de write-debug :whistle:

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 12 ans 6 mois #15705 par Albert
Réponse de Albert sur le sujet Re:Traitement de fichier
Franchement chapeau. Qu'est ce que ce write-debug ?
Parcontre il me met absolument tout jusqu'au commentaire sur une seul ligne exemple :

# tnsnames.ora

TEST.WORLD =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(Host = LUXS00)(Port = 1521))
)
(CONNECT_DATA = (SID = TEST))
)

CORE.WORLD =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(Host = LUXS001)(Port = 1521))
)
(CONNECT_DATA = (SID = COREP))
)

################################

FRV =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(Host = FRV)(Port = 1597))
)
(CONNECT_DATA = (SID = SP))
)

devient

# tnsnames.ora

TEST.WORLD = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(Host = LUXS00)(Port = 1521)) ) (CONNECT_DATA = (SID = TEST)) )CORE.WORLD = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(Host = LUXS001)(Port = 1521)) ) (CONNECT_DATA = (SID = COREP)) )

################################

FRV = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(Host = FRV)(Port = 1597)) ) (CONNECT_DATA = (SID = SP)) )

tout sur une ligne.
Comment gérer pour garder les lignes vides ?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 12 ans 6 mois #15706 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:Traitement de fichier
FlqX écrit:

Franchement chapeau.

C'est un pb récurrent, donc une fois que l'on a compris le principe on le réutilise.
FlqX écrit:

Qu'est ce que ce write-debug ?

Des traces facilitant la mise au point de code. Consulte l'aide en ligne. Voir aussi la variable $DebugPreference
FlqX écrit:

Par contre il me met absolument tout jusqu'au commentaire sur une seul ligne exemple


Exacte, mauvaise lecture des specs de ma part.
Mais je te laisse le corriger :)<br><br>Message édité par: Laurent Dardenne, à: 23/08/13 11:02

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 12 ans 6 mois #15707 par Albert
Réponse de Albert sur le sujet Re:Traitement de fichier
Ok parfait je m'en suis sortie avec .length -eq 0
[code:1]param([string]$file)
$file2 = \&quot;fileright.txt\&quot;
function Merge-OraAddressName {
param(
[parameter(Mandatory=$True,ValueFromPipeline=$True)]
$Line
)

begin {$out=''}
Process {
$Line=$_
write-Debug \&quot;$line\&quot;
if($Line -match \&quot;#\&quot; )
{
write-Debug \&quot;`t Send\&quot;
$out
\&quot;`r`n$Line`r`n\&quot;
$out=''
}
else
{
if($Line.Length -eq 0)
{
write-Debug \&quot;`t Add\&quot;
$out += \&quot;`r`n\&quot;
}
else
{
write-Debug \&quot;`t Add\&quot;
$out += $Line
}
}
}#process
end {$out}
}#Merge-OraAddressName

Get-content $file|
Merge-OraAddressName|
out-file $file2[/code:1]

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.106 secondes
Propulsé par Kunena