code

PowerShell: 텍스트 파일 내용 전체를 변수에 저장

starcafe 2023. 4. 8. 09:06
반응형

PowerShell: 텍스트 파일 내용 전체를 변수에 저장

PowerShell을 사용하여 텍스트 파일의 전체 내용(존재하거나 존재하지 않을 수 있는 후행 공백 행 포함)을 변수에 저장하려고 합니다.텍스트 파일의 총 줄수도 알고 싶습니다.가장 효율적인 방법은 무엇입니까?

참고로 PowerShell 3.0에서는Get-Content새 Raw 스위치를 사용한 cmdlet:

$text = Get-Content .\file.txt -Raw 

파일의 전체 내용을 가져오려면:

$content = [IO.File]::ReadAllText(".\test.txt")

줄 수:

([IO.File]::ReadAllLines(".\test.txt")).length

또는

(gc .\test.ps1).length

후행의 빈 행을 포함시키는 것은 다소 해킹적입니다.

[io.file]::ReadAllText(".\desktop\git-python\test.ps1").split("`n").count

Powershell 2.0:

(자세한 내용은 이쪽 참조)

$text = Get-Content $filePath | Out-String

IO.File.ReadAllText상대 패스로는 동작하지 않습니다.파일을 검색합니다.%USERPROFILE%\$filePath현재 디렉토리 대신(Powershell ISE에서 적어도 실행 중인 경우):

$text = [IO.File]::ReadAllText($filePath)

Powershell 3+:

$text = Get-Content $filePath -Raw

파일을 읽기 위한 또 하나의 접근법은 변수 표기법 또는 변수 구문이라고 불리며, 단순히 filespec 뒤에 달러 기호를 붙이는 곱슬머리 괄호 안에 wit를 넣는 것입니다.

$content = ${C:file.txt}

이 표기법은 L값 또는 R값으로 사용할 수 있습니다.따라서 다음과 같은 방법으로 파일에 쉽게 쓸 수 있습니다.

 ${D:\path\to\file.txt} = $content

또 다른 편리한 사용법은 임시 파일이나 하위 표현식 없이 파일을 수정할 수 있다는 것입니다. 예를 들어 다음과 같습니다.

${C:file.txt} = ${C:file.txt} | select -skip 1

나는 처음에 이 표기법에 매료되었다. 왜냐하면 이 표기법에 대한 어떤 것도 알아내는 것이 매우 어려웠기 때문이다!PowerShell 2.0 사양에서도 한 줄만 사용할 수 있으며 사용 설명이나 자세한 내용은 일절 기재되어 있지 않습니다.그 후 PowerShell 변수에 대한 이 블로그 엔트리를 발견했는데, 이는 몇 가지 유용한 정보를 제공합니다.

이 사용법에 대한 마지막 메모는 드라이브 명칭을 사용해야 한다는 것입니다.${drive:filespec}위의 모든 예에서와 같이.드라이브 없음(예:${file.txt})는 동작하지 않습니다.해당 드라이브의 filespec에 대한 제한은 없습니다. 절대 또는 상대일 수 있습니다.

Get-Content는 데이터를 가져와 한 줄씩 배열에 덤프합니다.목록에 기재되어 있는 것 외에 특별한 요건이 없는 경우, 컨텐츠는 변수에 저장할 수 있습니다.

$file = Get-Content c:\file\whatever.txt

그냥 실행$file전체 내용이 반환됩니다.그럼 그냥 하면 되겠네$file.Count(어레이에는 이미 카운트 방식이 내장되어 있기 때문에) 행의 합계수를 취득합니다.

이게 도움이 됐으면 좋겠네요!저는 대본에 능한 사람은 아니지만, 위의 많은 것들보다 이게 더 쉬울 것 같아요.

이진 파일 읽기:

이는 요청하신 내용과 정확히 일치하지는 않지만, 일부에서는 사용 사례에 유용하다고 생각할 수 있습니다. Get-Content -Rawstringbyte[]:

Get-Content c:\file.bin -Encoding Byte -ReadCount 0

-Read-Count는 한 번에 파이프라인을 통과하는 회선의 수(기본값은 1)를 나타냅니다.또한 0은 1개의 조작으로 모든 작업을 수행하므로 퍼포먼스가 향상됩니다.

크레딧은 이 솔루션을 발표한 Shay Levy에게 돌아간다(여기서 Shay의 투고를 참조).

언급URL : https://stackoverflow.com/questions/7976646/powershell-store-entire-text-file-contents-in-variable

반응형