Como remover substring no script Powershell

2

Esse script é quase o que eu preciso:

$input_path = 'C:\Common'
$output_file = 'C:\Common\extracted.txt'
$regex = 'assets'

Get-ChildItem -Path $input_path -Filter *.txt 
| Select-String -Pattern $regex -AllMatches  
| Out-File $output_file -Force

O problema que tenho é que quando eu altero o $ inputpath para, digamos, 'C: \ Common \ Data', o arquivo de saída adiciona Data \ ao início da linha. Alguém pode me dizer como não ter esse último nome na saída?

    
por ice1000 07.02.2015 / 17:58

1 resposta

0

ls -Fo $input_path -Fi *.txt|Select-String -Patt $regex -All|%{$f=$_.path -split '\';$f[-2]+'\;'+$_.filename+';'+$_.linenumber+';'+$_.line}|Out-File $output_file -Fo -width 400 -OutB 0x7FFFFFFF -EA 0
  • -OutB 0x7FFFFFFF - tamanho do buffer de alocação de arquivos - speedup create and populate file
  • -width 400 - largura da linha no arquivo, tamanho padrão 80
  • -EA 0 = ErrorAction - pula todo o erro

  • $f=$_.path -split '\' - divide o caminho completo do arquivo, delimita \ e salva as partes no array $f

  • $f[-2] - retorna o segundo elemento na matriz final $ f (diretório do arquivo; neste exemplo - Data directory)
  • $_.filename - nome do arquivo
  • $_.linenumber - número da linha, em que padrão de pesquisa (variável $ regex)
  • $_.line - texto no número da linha

  • ls -Fo $input_path -Fi *.txt < = > Get-ChildItem -Path $input_path -Filter *.txt

  • Select-String -Patt $regex -All < = > %código%
por 07.02.2015 / 19:29