2017-08-10 10 views
3

ダブルタブ列を含むtxt形式のログファイルがあります。クレイジーそこImport-Csvを使用して区切り文字を連続区切り文字として扱うことはできますか?

Import-Csv C:\path\to\file\PageLog.txt -Delimiter "`t" | Export-Csv C:\path\to\file\PageLog.csv -NoTypeInformation 

だから、何をし、それが働いているが、私は自動的に生成さH1ヘッダーと空の列で終わる: 私は、次のPowerShellを使用していませんよ。 Excelの[データ]タブからインポートするときに、この2つのタブを1つのように扱うことは可能ですか?または、何らかの理由でExport-CSV中に空のH1列を省略しますか?

+1

「... | * * ExcludeProperty H1 | ... 'を選択してください:https://stackoverflow.com/a/40085445/1701026 – iRon

答えて

2

残念ながら、Import-CSVの区切り文字は1文字しか使用できません。これには2つのオプションがあります。最初に、ファイルの文字列解析を使用して、1つの区切り文字を取得します。

(Get-Content C:\path\to\file\PageLog.txt) -replace "`t`t","`t" | Out-File C:\path\to\file\PageLog.temp.txt 
Import-Csv C:\path\to\file\PageLog.temp.txt -Delimiter "`t" | Export-Csv C:\path\to\file\PageLog.csv -NoTypeInformation 

この方法では、インポート/エクスポートをスキップしてカンマで置き換えることができます。

それ以外の場合は、追加の列とフィルタを使用してcsvをインポートできます。鉄が示すように、一つだけ余分な列を持っている場合、あなたは単にそれを除外することができます:あなたが他の列のどれもHで始まっていないことを前提に-ExcludeProperty H*を使用することができるように

Import-Csv C:\path\to\file\PageLog.txt -Delimiter "`t" | 
    Select-Object * -ExcludeProperty H1 | 
    Export-Csv C:\path\to\file\PageLog.csv -NoTypeInformation 

あなたは倍数を持っている場合は

Select-Objectはワイルドカードをサポートしています。

それ以外の場合は、列名に対して正規表現を使用できます。

$CSV = Import-Csv C:\path\to\file\PageLog.txt -Delimiter "`t" 
$GoodColumns = $CSV | 
    Get-Member -MemberType NoteProperty | 
    Where-Object {$_.name -notmatch '^H\d+$'} | 
    Select-Object -ExpandProperty Name 
$CSV | Select-Object $GoodColumns | Export-Csv C:\path\to\file\PageLog.csv -NoTypeInformation 
+0

インポート後にH1列を除外するのが最も簡単で簡単な方法でした。最初はGet-Contentコマンドレットを試しましたが、-replaceは有効なパラメータではありませんでしたか? – Heath

+0

@Heath Get-Contentコマンドをラップするのを忘れましたが、 '-replace'はパラメータではなく正規表現演算子です。回答が更新されました。 – BenH

+0

ええ、更新された答えは本当にうまく動作します。ありがとうございました! – Heath

1

あなたは.CSV上の機能を検索/置換を実行することができます(なし、1と2つの連続したタブを交換?)

私はインポート、CSVファイルを-replace許可するかどうかを知り、そうでない場合はありません.csvファイルを文字列(Powershell Converting .csv format (Import-csv) to stringを参照)に変換し、-replaceを実行してから.csvに変換し直すことができます。

+0

あなたは正しいですし、検索/置換は私の最初の考えでしたが、私は今やるべき束を持っています。今後はログファイルを手動で変更する必要はあまりありません。リンクBtwをありがとう、それは非常に良いです。 – Heath

関連する問題