텍스트 파일을 Windows 명령 줄과 연결하여 선행 줄 삭제
비교적 큰 텍스트 파일을 연결해야하며 명령 줄을 통해이 작업을 선호합니다. 불행히도 Windows 만 있고 새 소프트웨어를 설치할 수 없습니다.
type file1.txt file2.txt > out.txt
내가 원하는 것을 거의 얻을 수는 있지만 file2.txt의 첫 번째 줄이 out.txt에 포함되는 것을 원하지 않습니다.
나는 것으로 나타났습니다 more
가 +n
시작 라인을 지정하는 옵션을하지만, 내가 원하는 결과를 얻기 위해이 결합하는 것을 처리하지 않았다. 나는 이것이 Windows에서 가능하지 않을 수도 있다는 것을 알고 있으며, 줄을 없애기 위해 항상 수동으로 out.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 명령을 사용하여 파일을 한 줄씩 에코하고 'skip'옵션을 사용하여 여러 줄을 놓치십시오 ...
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 변수가 배치 파일 내에서 사용될 때 이중 %를 주목하십시오.
내 담당자가 너무 낮음을 제외하고 이것을 ghostdog74에 대한 의견에 넣을 것입니다.
more +2 file2.txt > temp
이 코드는 실제로 파일의 1 행과 2 행을 무시합니다. OP는 첫 번째 파일의 모든 행을 유지하고 (헤더 행을 유지하기 위해) 두 번째 파일에서 첫 번째 행 (아마도 동일한 헤더 행)을 제외 시키려고합니다 more +1
. 따라서 OP 행만 제외해야합니다 .
type temp file1.txt > out.txt
이 코드에서 어떤 주문 결과가 나오는지 확실하지 않습니다. 가요 temp
추가 file1.txt
(필요에 따라), 또는 file1.txt
추가 temp
(헤더 행이 결과 파일의 중간에 매립되는 바와 같이 바람직하지 않은).
또한 이러한 작업에는 대용량 파일 (예 : 300MB)이 포함 된 매우 긴 시간이 걸립니다.
이를 수행하는 방법은 다음과 같습니다.
(type file1.txt && more +1 file2.txt) > out.txt
소프트웨어를 설치할 수 없다고 말했지만 그 제한이 얼마나 엄격한 지 잘 모르겠습니다. 어쨌든, 나는 같은 문제 (아마도 같은 헤더로 두 파일을 연결하려고 시도 중)를 가지고 있었고이 페이지에 도착한 다른 사람들에게 대안적인 답변을 줄 것이라고 생각했습니다.
Windows에서 많은 명령을 시도하고 심하게 좌절 한 후 큰 파일을 열 수 있다고 약속 한 모든 종류의 그래픽 편집기를 시도했지만 그 후에는 Linux 루트로 돌아와 Cygwin을 열었습니다. 신속한. 두 가지 명령 :
cp file1.csv out.csv
tail -n+2 file2.csv >> out.csv
들어 file1.csv
8백메가바이트 및 file2.csv
400메가바이트,이 두 명령은 내 컴퓨터 5 초 미만했다. Cygwin 프롬프트에서 나는 Cygwin에서 Linux 명령이 느리다고 생각했지만 그 접근 방식은 훨씬 적은 노력이 들었고 내가 찾을 수있는 모든 Windows 접근 방식보다 훨씬 쉬웠습니다.
Powershell에서 :
Get-Content file1.txt | Out-File out.txt
Get-Content file2.txt | Select-Object -Skip 1 | Out-File -Append out.txt
당신은 또한 이것을 간단히 시도 할 수 있습니다
type file2.txt >> file1.txt
file1.txt의 끝에 file2.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
This takes Test.txt
with headers and appends Test1.txt
and Test2.txt
and writes results to Testresult.txt
file after stripping headers from second and third files respectively:
type C:\Test.txt > C:\Testresult.txt && more +1 C:\Test1.txt >> C:\Testresult.txt && more +1 C:\Test2.txt >> C:\Testresult.txt
'IT story' 카테고리의 다른 글
Ubuntu 11.04에서 R 패키지를 설치할 수 없습니다. (0) | 2020.07.09 |
---|---|
인라인과 외부 자바 스크립트는 언제 사용해야합니까? (0) | 2020.07.09 |
유닉스에서 지난 1 시간 동안 생성 된 파일을 찾는 방법 (0) | 2020.07.09 |
Angular 2 서비스에서 Observable 생성 및 반환 (0) | 2020.07.09 |
C #에 XNOR (논리 이중 조건부) 연산자가 있습니까? (0) | 2020.07.09 |