2017-05-11 29 views
-2

'& @ *'のような多くの特殊文字を含むcsvファイルを開き、 '_'で置き換えようとしています。私はまたすべての 'NULL'文字列を ''に置き換えたいと思います。 完了したら、ファイルを同じ場所に保存します。Powershellファイルを開いて特殊文字+ NULLを置換する

私が試したこの

$File = Import-Csv "C:\Users\a\Desktop\Al.csv" 

foreach ($line in $File) 
{ 
    $line.Replace('[[+*@?()\\.]','_') 
    $line.Replace('NULL','') 
} 

EDIT:それはであるかのようにファイルを読み取るためのコメントのおかげで

(get-content "C:\Users\a\Desktop\Al.csv") -replace ('[[+*@?()\\]','_') -replace('NULL','') | Set-Content "C:\Users\a\Desktop\Al.csv" 
+0

これまでに何を試しましたか?問題に遭遇した場所にコードを追加できますか? – BenH

+3

'Import-Csv'は行を返しません。各CSV列のプロパティを持つPSObjectsを返します。 '$ line.Replace(...)'は変数をインプレースで変更しないので、使用していない値を返します。 'foreach()'はパイプラインに出力しないので、これは悪い選択です。 '(get-content" c:\ ... \ A1.csv "-raw).replace(...)。replace(...)|セット内容 "c:\ ... \ A1.csv" – TessellatingHeckler

+3

@TessellatingHecklerが言ったこと。また、 'Replace()'メソッドは単純な文字列置換を行います。正規表現の置き換えには、 '-replace'演算子を使用します。 –

答えて

0

あなたの最善の策でこれを行うことができたです単にデータのバイナリブロックを作成し、必要のない文字を置き換えてから、元に戻してください。

あなたがしようとしていることについては、それがCSVでもTXTでもないということは違いにはなりません。

たとえば、Get-contentはすべてを読み取り、CSV形式に制限されません。

関連する問題