2012-07-25 10 views
11

Quiero agregar varias cadenas en un conjunto de datos con cadenas personalizadas.PowerShell - cadenas que se añaden

Ejemplo

contenido de Conjunto de datos:

Test1 
Test2 
Test3 

Resultado después añadiendo:

Test1.com 
Test2.com 
Test3.com 

tendría que utilizar expresiones regulares para analizar al final de cada prueba [n] para poder agregarlo con una cadena personalizada (.com)? ¿Alguien tiene un ejemplo que describa exactamente cómo hacerlo?

EDIT:

Ok, debería haber sido más específico. estoy leyendo desde un valor de escritura de SQL-Mesa y en un conjunto de datos que se exporta a CSV de la siguiente manera:

$DataSet.Tables[0] | ConvertTO-Csv -Delimiter ',' -NotypeInformation |`% { $_ -replace '"','' } | out-file $outfile -Encoding "unicode" 

El conjunto de datos contiene de cadenas tales como:

Banana01 Banana02 Apple01 Cherry01 Cherry02 Cherry03

lo que quiero hacer es decir, añadiendo solamente .com Cherry01, Cherry02 y Cherry03 y después de appending.com, exportarlo como CSV.

Respuesta

16

Hay muchas maneras. Éstos son algunos de ellos:

# Using string concatenation 
'Test1','Test2','Test3' | Foreach-Object{ $_ + '.com' } 

# Using string expansion 
'Test1','Test2','Test3' | Foreach-Object{ "$_.com" } 

# Using string format 
'Test1','Test2','Test3' | Foreach-Object{ "{0}{1}" -f $_,'.com' } 
+0

Gracias. ¿Podría darme un ejemplo relacionado con el código que publiqué? – t1red

+0

¿Cuáles son los encabezados de columna para cada valor al que desea agregar? –

+0

Todas las cadenas que deseo agregar obtuvieron el encabezado "vmname" – t1red

8

usted podría utilizar algo como esto:

Ejemplo 1

$t = "test" 
$t = $t + ".com" 

Ejemplo 2

$test = @("test1","test2") 

$test | ForEach-Object { 
$t = $_ + ".com" 
Write-Host $t} 

Con su código adicional que hice esto. No tengo una base de datos para probarlo, por lo que hice el conjunto de datos manualmente, por lo que es posible que deba cambiar el $ DataSet [0] en mi código a $ DataSet.Tables [0].

$DataSet[0] | ConvertTO-Csv -Delimiter ',' -NotypeInformation | Foreach-Object{$T=$_ 
IF($T -match "(Cherry\d\d)"){$T = $T -replace "(Cherry\d\d)(.+)",'$1.com$2'};$T } | out-file $outfile -Encoding "unicode" 
+0

Gracias. He publicado un código en mi publicación, sería genial si pudiera echarle un vistazo. – t1red

+0

Es difícil de probar porque no tengo acceso a sql, así que solo échale un vistazo y si no es correcto, puedo intentar solucionarlo por ti. – justinf

+0

Gracias. Pero creo que de esta forma se anexará cada cadena, sin importar con qué esté empezando ... Pero solo quiero agregar aquellas con .com que comienzan con "Cherry #", como publiqué en la edición en mi publicación inicial. – t1red

0

$array | %{if($_ -match "^Cherry\d\d"){$_ += ".com"};$_}

Cuestiones relacionadas