2017-12-01 28 views
-2

텍스트 파일에 중복 된 줄을 제거 (텍스트가 이미 정렬되므로 정렬 부분을 건너 뛸 수 있습니다)나는 주위를 찾고 있지만, 아래의 전체 작업을 수행하는 일부 자동 스크립트를 얻을 수하지 않은

3), 텍스트 파일

불행하게도

덮어 내가 한 특정 파일에서 줄을 제거 만 검색의 모든 결과를 &을 저장하고 텍스트 파일에서 다른 파일 이름으로 저장하십시오.

그런 다음이 스크립트를 실행하는 일정 작업을 설정합니다.

스크립트 지식이 없으며 배치 스크립트 설정에 대한 경험이 거의 없습니다. 귀하의 도움과 안내는 많은 도움이 될 것입니다.

+0

여기에 오기 전에 조사를해야 할 것입니다. 이것은 계약직을 요청할 곳이 아닙니다. –

+0

원하는 것을하거나 만들 수있는 스크립트를 구매하려고하십니까? 그렇다면 사용중인 언어를 저희에게 알려 주시고 저희가 귀하를 도와 줄 수있는 몇 가지 코드를 게시하십시오. – EasyE

답변

0

불행히도, 특정 파일에서 행을 제거하고 다른 파일 이름으로 저장하기 위해 검색 한 모든 결과.

여기에 답을 주셨으면합니다. 내가 쓰고있는 언어를 모르지만 일반적으로이 시나리오에서 나는 그런 것을 할 것이다.

  1. 파일 열기
  2. 읽기 라인
  3. 정렬 선 파일 B로
  4. 제거 중복 라인
  5. 저장
  6. 파일 닫기
  7. 이름 바꾸기 파일 A _backup하거나 불필요한 (_original , 데이터 유실 방지를위한 안전한 보호 장치)
  8. 파일 이름을 파일 A로 바꿉니다.

또 어떤 언어를 쓰는지 모르겠지만 더 이상 질문에 답할 수있는 세부 정보가 충분하지 않습니다.

그러나 요점은 단순히 원래 파일을 삭제하고 새 파일의 이름을 원래 파일로 바꾸는 것입니다.

+0

불분명 한 질문에서 나는 그가 텍스트 파일을 찾기 위해 디렉토리를 재귀 적으로 가로 질러 가고 싶다고 생각한다. – EasyE

+0

그건 분명히 모든 사람들이 루프 문을 작성하는 방법을 알고 있다고 생각하고 요점을 놓친 것 같습니다. 솔직히 왜 나는이 질문에 대답하려고 시도했는지 모르겠다. – Slacker

0

GoLang의 간단한 스크립트를 작성하고 댓글을 달았습니다. 실행 방법을 알고있는 경우 도움이 될 수 있습니다. 그렇지 않으면 빠른 연구가 도움이 될 것입니다.

package main 

import (
    "io/ioutil" 
    "strings" 
    "log" 
    "os" 
) 

func main() { 
    // get all files in directory 
    files, err := ioutil.ReadDir(".") 
    // check error 
    if err != nil { log.Println(err) } 
    // go through all the files 
    for _, file := range files { 
     // check if it's a txt file (can change this) 
     if strings.HasSuffix(file.Name(), "txt") { // you can change this 
      // read the lines 
      line, _ := ioutil.ReadFile(file.Name()) 
      // turn the byte slice into string format 
      strLine := string(line) 
      // split the lines by a space, can also change this 
      lines := strings.Split(strLine, " ") 
      // remove the duplicates from lines slice (from func we created) 
      RemoveDuplicates(&lines) 
      // get the actual file 
      f, err := os.OpenFile(file.Name(), os.O_APPEND|os.O_WRONLY, 0600) 
      // err check 
      if err != nil { log.Println(err) } 
      // delete old one 
      os.Remove(file.Name()) 
      // create it again 
      os.Create(file.Name()) 
      // go through your lines 
      for e := range lines { 
       // write to the file without the duplicates 
       f.Write([]byte(lines[e] +" ")) // added a space here, but you can change this 
      } 
      // close file 
      f.Close() 
     } 
    } 
} 

func RemoveDuplicates(lines *[]string) { 
    found := make(map[string]bool) 
    j := 0 
    for i, x := range *lines { 
     if !found[x] { 
      found[x] = true 
      (*lines)[j] = (*lines)[i] 
      j++ 
     } 
    } 
    *lines = (*lines)[:j] 
} 

파일 : hello hello yes no 반환 결과는 : 귀하의 모든 파일과 디렉토리에이 프로그램을 실행하면 hello yes no

, 그것은 중복을 제거 할 수 있습니다.

희망 사항에 따라