source

텍스트 파일을 Windows 명령줄과 연결하고 선행 행을 삭제합니다.

ittop 2023. 4. 12. 22:59
반응형

텍스트 파일을 Windows 명령줄과 연결하고 선행 행을 삭제합니다.

비교적 큰 텍스트 파일을 연결해야 하는데 명령줄을 통해 연결하는 것이 좋습니다.유감스럽게도 Windows만 있고 새로운 소프트웨어를 설치할 수 없습니다.

type file1.txt file2.txt > out.txt

원하는 것을 거의 얻을 수 있지만 file2의 첫 줄은 원하지 않습니다.txt는 out에 포함됩니다.txt를 클릭합니다.

나는 그것을 알아차렸다more가지고 있다+n시작선을 지정하기 위한 옵션이지만 원하는 결과를 얻기 위해 이것들을 조합하지 못했습니다.Windows 에서는 이 조작이 불가능할 가능성이 있기 때문에, 언제라도 편집할 수 있습니다.txt를 수동으로 사용하여 회선을 제거합니다만, 명령줄에서 간단하게 할 수 있는 방법이 있습니까?

more +2 file2.txt > temp
type temp file1.txt > out.txt

또는 를 사용할 수 있습니다.copy.봐copy /?자세한 것은 이쪽입니다.

copy /b temp+file1.txt  out.txt

이것을 사용하면, 다음과 같이 동작합니다.

TYPE \\Server\Share\Folder\*.csv >> C:\Folder\ConcatenatedFile.csv

물론, 매 경기 전에, 당신은DELETE C:\Folder\ConcatenatedFile.csv

유일한 문제는 모든 파일에 헤더가 있으면 모든 파일에서 반복된다는 것입니다.

사용할 권장 사항에 대해 코멘트를 할 수 있는 평가점이 부족합니다.*.csv >> ConcatenatedFile.csv단, 경고를 추가할 수 있습니다.

를 작성하면ConcatenatedFile.csv접속에 사용하는 것과 같은 디렉토리에 있는 파일은, 그 파일에 추가됩니다.

FOR 명령을 사용하여 파일을 한 줄씩 에코하고 '건너뛰기' 옵션을 사용하여 시작 줄 수를 놓칩니다.

FOR /F "skip=1" %i in (file2.txt) do @echo %i

다음과 같은 내용을 포함하는 배치 파일의 출력을 리디렉션할 수 있습니다.

FOR /F %%i in (file1.txt) do @echo %%i
FOR /F "skip=1" %%i in (file2.txt) do @echo %%i

배치 파일 내에서 FOR 변수를 사용하는 경우 두 배 %에 주의하십시오.

방법은 다음과 같습니다.

(type file1.txt && more +1 file2.txt) > out.txt

ghostdog74에게 댓글을 달아주고 싶지만, 내 평판이 너무 낮아서, 간다.

more +2 file2.txt > temp
이 코드는 실제로 파일의 1행과 2행을 무시합니다.OP는 첫 번째 파일의 모든 행을 유지(헤더 행을 유지)한 후 두 번째 파일의 첫 번째 행(아마 동일한 헤더 행)을 제외하여 헤더 행만 사용해야 합니다.more +1.

type temp file1.txt > out.txt

이 코드에서 어떤 오더가 발생하는지 불분명합니다.temp에 부가된.file1.txt(필요에 따라) 또는file1.txt에 부가된.temp(헤더 행이 결과 파일 중간에 배치되기 때문에 필요).

또한 대용량 파일(예: 300MB)의 경우 이러한 작업에는 매우 오랜 시간이 소요됩니다.

powershell의 경우:

Get-Content file1.txt | Out-File out.txt
Get-Content file2.txt | Select-Object -Skip 1 | Out-File -Append out.txt

소프트웨어를 설치할 수 없다고 하셨는데, 그 제한이 얼마나 엄격한지 모르겠습니다.어쨌든, 같은 문제(아마도 같은 헤더의 2개의 파일을 연결하려고 하는 경우)가 있었습니다.그리고, 이 페이지에 도착하는 다른 사람에게도, 다른 회답은 제공할 수 있다고 생각했습니다.그것은 나에게 있어서 매우 효과가 있었기 때문입니다.

윈도우에서 많은 명령어를 시도했지만 큰 파일을 열 수 있다고 약속했던 모든 종류의 그래픽 에디터를 시도해본 후, 저는 마침내 Linux 루트로 돌아가 Cygwin 프롬프트를 열었습니다.두 가지 명령어:

cp file1.csv out.csv
tail -n+2 file2.csv >> out.csv

★★★의 file1.csv 및 800 MB »file2.csv이두는 내 미만이 .400MB, 5초 미만이었습니다.Cygwin 。Cygwin에서는 Linux 명령어가 느리다고 생각했지만, 그 접근법은 제가 찾을 수 있는 어떤 윈도우 접근법보다 훨씬 쉽고 훨씬 적은 노력을 들였습니다.

이것도 간단하게 시도해 볼 수 있습니다.

type file2.txt >> file1.txt

file2의 내용이 추가됩니다.txt는 file1 .txt

원본 file1이 필요한 경우.txt, 미리 백업을 해둬.아니면 이렇게 할 수도 있고

type file1.txt > out.txt
type file2.txt >> out.txt

첫 번째 파일 끝에 줄 바꿈을 하려면 추가하기 전에 다음 명령을 사용합니다.

type file1.txt > out.txt
printf "\n" >> out.txt
type file2.txt >> out.txt

copy그럼 와일드카드를 사용하여 여러 파일을 하나의 파일로 연결할 수 있음을 설명합니다.

예를 들어 "abc"로 시작하는 현재 폴더의 모든 .txt 파일을 xyz라는 이름의 단일 파일로 복사하려면 다음과 같이 하십시오.txt:

copy abc*.txt xyz.txt
more +2 file1.txt > type > out.txt && type file2.txt > out.txt

은 ★★★★★★★★★★★★★」Test.txt 및 " " " " 를 합니다.Test1.txt ★★★★★★★★★★★★★★★★★」Test2.txt.Testresult.txt과 세 한 후 : "Direction" 및 "Direction":

type C:\Test.txt > C:\Testresult.txt && more +1 C:\Test1.txt >> C:\Testresult.txt && more +1 C:\Test2.txt >> C:\Testresult.txt

언급URL : https://stackoverflow.com/questions/2477271/concatenate-text-files-with-windows-command-line-dropping-leading-lines

반응형