2017-03-05 5 views
4

Ce que j'essaie de faire est de créer un document Word à partir du fichier texte. Mais le fichier texte a une page Breaks dedans. Je veux supprimer ou remplacer ces pagesBreaks dans le fichier texte. C'est pour me permettre d'ajouter pageBreaks dans le document Word que je vais créer ultérieurement dans les endroits où j'en ai réellement besoin. Ci-dessous le code PowerShell que j'ai essayé moi-même pour remplacer le pageBreak dans le fichier texte. Cela ne fonctionne pas. En utilisant "f" à la place de pageBreak ne fonctionne pas.Utiliser PowerShell comment remplacer pageBreak dans un fichier texte?

$oldWord = "`fPage" 
$newWord = "Page" 

#-- replace the page breaks in the file 
(Get-Content $inputFilePath) -replace '$oldWord', '$newWord' | Set-Content $inputFilePath 

Le symbole ci pageBreak dans l'éditeur de texte UltraEdit est ♀ Remplacement du personnage UltraEdit est facile. Je veux remplacer ou supprimer cela en utilisant Powershell.

Voici une question connexe. Mais toujours sans réponse en ce qui concerne le code PowerShell.

How to remove unknown line break (special character) in text file?

+0

Ce que j'essaie de faire est de créer un document Word à partir du fichier texte. Mais le fichier texte a une page Breaks dedans. Je veux supprimer ou remplacer ces pagesBreaks dans le fichier texte. C'est pour me permettre d'ajouter pageBreaks dans le document Word que je vais créer par la suite – RayBacker

+0

@RyanBemrose J'ai essayé d'utiliser -Raw. Voici l'erreur. Get-Content: Impossible de trouver un paramètre correspondant au nom de paramètre 'Raw'. – RayBacker

+0

Je suppose que Windows 7? Je pense que le paramètre '-Raw' a été ajouté en 8.0 ou 8.1. Quoi qu'il en soit, si les réponses affichées ne fonctionnent pas pour vous, nous aurons probablement besoin de savoir exactement quel est le personnage. Essayez d'ouvrir le fichier dans un éditeur hexadécimal pour voir la séquence de caractères de fin de page. –

Répondre

2

pour les sauts de page, vous pouvez utiliser:

[io.file]::ReadAllText('H:\oldFile.txt') | %{$_.replace("`f","")} >h:\newFile.txt 

ci-dessous extrait fonctionnera de Powershell v3:

cat H:\oldFile.txt -raw | %{$_.replace("`f","")} >h:\newFile.txt 
+0

@RayBacker J'ai modifié le code –

+0

@RayBacker si cela a résolu le problème, puis marquer la réponse comme acceptée, sera utile pour les personnes qui obtiennent le même problème –

+0

@ Abhijit-pk Le code fonctionne et la réponse est acceptée. Merci – RayBacker

2

Merci pour la question! Celui-ci était intéressant. Donc le caractère spécial Form-Feed est un bugger dans powershell. Si vous faites écho, vous obtenez juste un caractère impair, ou un carré si vous ne pouvez pas l'afficher. Mais si vous copiez et collez-le dans le terminal PowerShell, si vous venez de déplacer votre point d'entrée de commande en haut de l'écran. Impair.

Ce que j'ai fait, c'était de trouver des moyens de remplacer les caractères spéciaux généraux. Vous pouvez utiliser des expressions rationnelles à l'aide $oldWord -replace 'REGEX_GOES_HERE', 'THING_TO_REPLACE_WITH_HERE Powershell, donc ce que je suis venu avec est la suivante:

$oldWord -replace '[\f]', '' #You can also use \r for carriage return, \n for new line, \t for tab, \s for ALL whitespace

Cela permettra d'éliminer simplement toutes les instances du caractère de saut.

Espérons que cela aide! À votre santé!

+0

essayé d'utiliser $ oldWord = "[\ f '] Page" $ newWord = "Page". mais cela n'a pas fonctionné. Je ne suis pas habitué à REGEX. – RayBacker

+0

Désolé, j'ai fait une faute de frappe mineure dans le code que j'ai envoyé.Si votre chaîne ressemble à "' Voici quelques mots avec ce symbole bizarre 'f dedans 'et sauvegardés dans une variable' $ oldVariable' alors vous pouvez obtenir la version "fixe" en faisant '$ oldVariable -replace" [\ f] "," "' qui trouvera toutes les instances de 'f et le remplacera par une chaîne vide. Le résultat serait "Voici quelques mots avec ce symbole étrange" –