none
powerwhell - sostituzione testo con wildcard RRS feed

  • Domanda

  • Salve a tutti,

    ho fatto varie ricerche ma non ho trovato il modo di sostituire una stringa in un file conoscendo solo parte della stringa (premetto che non sono un esperto di powershell anche se ho iniziato ad utilizzarlo con soddisfazione).

    Spero di spiegarmi meglio con un esempio:

    vorrei :

    Get-Content "C:\TEMP\test.txt" | ForEach-Object { $_ -replace "^\^PQ*", "\^PQ1,0,1,Y" }

    ovvero sostituire tutte le righe che iniziano con "PQ" e contengono qualunque altro carattere (quindi "PQ*") con la stringa "^PQ1,0,1,Y".

    Qualcuno mi sa dare un aiuto?

    Grazie

    mercoledì 21 ottobre 2015 11:50

Risposte

  • Ciao,

    devi cambiare la regex:

    Get-Content "C:\TEMP\test.txt" | ForEach-Object { $_ -replace "PQ(.+)", "^PQ1,0,1,Y" }


    This post is provided AS IS with no warranties or guarantees, and confers no rights.
    ~~~
    Questo post non fornisce garanzie e non conferisce diritti


    mercoledì 21 ottobre 2015 12:02
  • Alessandro,
    non hai messo l'accento circonflesso nella regex, questo comporta la sostituzione di PQ anche se non è a capo riga . Segue il comando modificato

    PS C:\> Get-Content "C:\TEMP\T.txt"
    PQ1223213
    PQcxxcdcd
    PQdewfwdf
    abPQ1211123
    PS C:\> Get-Content "C:\TEMP\T.txt" | ForEach-Object { $_ -replace "^PQ(.*)", "PQ1,0,1,Y" }
    PQ1,0,1,Y
    PQ1,0,1,Y
    PQ1,0,1,Y
    abPQ1211123

    mi viene da pensare che lui volesse sostituire PQ*  con PQ1,0,1,Y

    se volesse il circonflesso nella sotituzione, segue la riga di codice

    Get-Content "C:\TEMP\T.txt" | ForEach-Object { $_ -replace "^PQ(.*)", "^PQ1,0,1,Y" }



    Gastone Canali >http://www.armadillo.it


    Se alcuni post rispondono al tuo quesito(non necessariamente i miei), ricorda di contrassegnarli come risposta e non dimenticare di contrassegnare anche i post utili. GRAZIE! Ricorda di dare un occhio ai link Click Here andHere



    mercoledì 21 ottobre 2015 22:26
    Moderatore

Tutte le risposte

  • Ciao,

    devi cambiare la regex:

    Get-Content "C:\TEMP\test.txt" | ForEach-Object { $_ -replace "PQ(.+)", "^PQ1,0,1,Y" }


    This post is provided AS IS with no warranties or guarantees, and confers no rights.
    ~~~
    Questo post non fornisce garanzie e non conferisce diritti


    mercoledì 21 ottobre 2015 12:02
  • Alessandro,
    non hai messo l'accento circonflesso nella regex, questo comporta la sostituzione di PQ anche se non è a capo riga . Segue il comando modificato

    PS C:\> Get-Content "C:\TEMP\T.txt"
    PQ1223213
    PQcxxcdcd
    PQdewfwdf
    abPQ1211123
    PS C:\> Get-Content "C:\TEMP\T.txt" | ForEach-Object { $_ -replace "^PQ(.*)", "PQ1,0,1,Y" }
    PQ1,0,1,Y
    PQ1,0,1,Y
    PQ1,0,1,Y
    abPQ1211123

    mi viene da pensare che lui volesse sostituire PQ*  con PQ1,0,1,Y

    se volesse il circonflesso nella sotituzione, segue la riga di codice

    Get-Content "C:\TEMP\T.txt" | ForEach-Object { $_ -replace "^PQ(.*)", "^PQ1,0,1,Y" }



    Gastone Canali >http://www.armadillo.it


    Se alcuni post rispondono al tuo quesito(non necessariamente i miei), ricorda di contrassegnarli come risposta e non dimenticare di contrassegnare anche i post utili. GRAZIE! Ricorda di dare un occhio ai link Click Here andHere



    mercoledì 21 ottobre 2015 22:26
    Moderatore
  • non ci ho pensato :), non ho testato del resto. Peccato veniale direi, penso di avere comunque indirizzato l'OP

    This post is provided AS IS with no warranties or guarantees, and confers no rights.
    ~~~
    Questo post non fornisce garanzie e non conferisce diritti




    • Modificato aperelli mercoledì 21 ottobre 2015 23:29
    mercoledì 21 ottobre 2015 23:27