programing

PowerShell에서 두 개의 텍스트 파일을 연결하는 방법은 무엇입니까?

magicmemo 2023. 4. 11. 21:55
반응형

PowerShell에서 두 개의 텍스트 파일을 연결하는 방법은 무엇입니까?

이 기능을 복제하려고 합니다.cat명령어를 사용합니다.

두 파일을 명시적으로 변수에 읽고 변수를 연결한 다음 연결된 변수를 쓰는 솔루션은 피하고 싶습니다.

및 cmdlet을 사용하면 됩니다.

Get-Content inputFile1.txt, inputFile2.txt | Set-Content joinedFile.txt

이 스타일로 3개 이상의 파일을 연결할 수도 있습니다.

소스 파일의 이름이 같은 경우는, 와일드 카드를 사용할 수 있습니다.

Get-Content inputFile*.txt | Set-Content joinedFile.txt

1: PowerShell 5 이전 버전에서는 에일리어스를 사용하여 이를 보다 간결하게 수행할 수 있었습니다.cat그리고.sc위해서Get-Content그리고.Set-Content각각 다음과 같다.단, 이러한 에일리어스는 문제가 있습니다.cat*nix 시스템의 시스템명령어입니다.sc는 Windows 시스템의 시스템명령어이므로 사용하지 않는 것이 좋습니다.scPowerShell Core(v7)에서는 정의되지 않습니다.PowerShell 팀은 일반적으로 별칭을 사용하지 않는 것이 좋습니다.

2: 와일드카드를 사용할 때는 주의해 주세요.inputFiles.txt(또는 패턴과 일치하는 유사한) PowerShell이 무한 루프 상태가 됩니다! (방금 테스트했습니다.)

3: 다음 파일이 있는 파일로 출력>는 문자 인코딩을 유지하지 않습니다.이 때문에,Set-Content를 권장합니다.

사용 안 함>; 문자 인코딩이 엉망이 됩니다.용도:

Get-Content files.* | Set-Content newfile.file

cmd다음과 같이 할 수 있습니다.

copy one.txt+two.txt+three.txt four.txt

PowerShell에서는 다음과 같습니다.

cmd /c copy one.txt+two.txt+three.txt four.txt

PowerShell의 방법은 gc를 사용하는 것이지만, 특히 대용량 파일의 경우 위의 방법이 매우 빠릅니다.또, ASCII 이외의 파일에서도, 를 사용해 사용할 수 있습니다./B전환합니다.

Add-Content cmdlet을 사용할 수 있습니다.첫 번째 파일의 내용을 검색하지 않기 때문에 다른 솔루션보다 조금 빠를 수 있습니다.

gc .\file2.txt| Add-Content -Path .\file1.txt

명령 프롬프트에서 파일을 대조하려면

type file1.txt file2.txt file3.txt > files.txt

PowerShell이 변환하는 것은type명령하다Get-Content즉, 를 사용하면 에러가 발생합니다.typePowerShell에서 명령어를 실행한다.Get-Content명령어를 사용하려면 파일을 쉼표로 구분해야 합니다.PowerShell의 동일한 명령어는 다음과 같습니다.

Get-Content file1.txt,file2.txt,file3.txt | Set-Content files.txt

사용:

Get-Content c:\FileToAppend_*.log | Out-File -FilePath C:\DestinationFile.log 
-Encoding ASCII -Append

이 부가 벌금.ASCII 인코딩을 추가하여 Notepad++에 표시되어 있는nul 문자를 삭제했습니다.

특정 매개 변수(예: 날짜 시간)로 파일을 정렬해야 하는 경우:

gci *.log | sort LastWriteTime | % {$(Get-Content $_)} | Set-Content result.log

다음과 같은 작업을 수행할 수 있습니다.

get-content input_file1 > output_file
get-content input_file2 >> output_file

서 ★★★★★>[out-file],[out-file],[out-file],[out-file],[out-file],[out-file],[out-file],[out-file],[out-file].

다른 응답의 대부분은 (배관으로 인해) 형식이 잘못되어 있는 경우가 많기 때문에 가장 안전한 방법은 다음과 같습니다.

add-content $YourMasterFile -value (get-content $SomeAdditionalFile)

$SomeAdditionalFile의 내용을 변수로 읽는 것을 피하고 싶으신 것은 알지만, 예를 들어 새 줄 포맷을 저장하기 위해서는 필요 없는 적절한 방법이 없다고 생각합니다.

회피책은 $SomeAdditionalFile을 한 줄씩 루프하여 $YourMasterFile에 연결하는 것입니다.그러나 이는 지나치게 많은 리소스를 필요로 합니다.

부호화 및 행 끝을 유지하려면:

Get-Content files.* -Raw | Set-Content newfile.file -NoNewline

주의: AFIR. 오래된 Powershell에서는 파라미터가 지원되지 않습니다(<3?<4).

"파워셸 방식"은 다음과 같습니다.

set-content destination.log -value (get-content c:\FileToAppend_*.log )

언급URL : https://stackoverflow.com/questions/8749929/how-do-i-concatenate-two-text-files-in-powershell

반응형