텍스트 파일을 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
'source' 카테고리의 다른 글
열 이름이 있는 모든 테이블 이름을 찾으시겠습니까? (0) | 2023.04.12 |
---|---|
Powershell 스크립트에서 BAT 파일을 실행하는 가장 안전한 방법 (0) | 2023.04.12 |
임의의 순서로 두 개의 이름을 포함하는 문자열과 일치하도록 정규 표현 (0) | 2023.04.12 |
현재 날짜에서 7일 빼기 (0) | 2023.04.12 |
WPF MVVM 탐색 뷰 (0) | 2023.04.12 |