2014-12-11 8 views
0

여러 줄의 큰 탭 구분 텍스트 (.txt) 파일이 있습니다. 내가 뭘하고 싶은지는이 txt 파일의 각 줄을 가져 와서 개별 파일로 만듭니다. 내 텍스트 파일은 다음과 같이한다면탭으로 구분 된 텍스트 파일에서 행을 읽어 bash를 사용하여 새 파일을 만듭니다.

예를 들어, :

11111111 
22222222 
33333333 

나는, 세 개의 텍스트 파일을 가지고 "11111111"를 읽고 하나, "22222222"를 읽는 또 다른, 그리고 다른 싶습니다 "33333333"이라고 읽습니다.

+0

은 당신이 지금까지 시도 않았다 파일의 내용을 다음과 같은 파일이있을 것이다 제공하는 것과 같은 경우

file=$1 i=0 while read line // reads file line by line do echo $line > "file$i" //writes each line to a file until last line is reached ((i++)) done < aline.txt 

? – tinySandy

+0

저는 어떻게 시작해야할지 모르겠습니다. 반대 방법으로 개별 파일을 하나의 큰 파일로 읽는 방법을 알고 있습니다. 제가 막혔다 고 생각하는 곳은 여러 줄을 읽는 방법을 모르겠습니다. 각 행을 변수로 변경합니까? 줄 끝에서 어떻게 멈출 수 있습니까? – zp91

+0

당신은 당신의 분리 된 파일에 어떤 종류의 이름을 원하십니까? 그리고 새로운 파일을 생성하는 규칙은 무엇입니까? 'if (prevLine! = currentLine) {make_new_file currentLine} prevLine = currentLine ...'? 행운을 빕니다. – shellter

답변

2

이 작업을 수행하는 가장 확실한 방법은 split을 사용하는 것입니다 : 이것은 별도의 파일로 outaa, outaboutac, 입력 파일의 각 포함 된 한 줄을 file을 분할

split -l 1 file out 

.

접미어의 기본 길이는 2이지만 -a 스위치를 사용하여 변경할 수 있습니다. 예를 들어
split -a 1 -l 1 file out은 파일 outa, outboutc을 대신 생성합니다.

man split에서 출력을 제어하는 ​​데 사용할 수있는 추가 옵션을 확인하십시오.

+0

이것이 가장 효과적이라고 나는 생각한다. 그러나 이것을 시도 할 때 하나의 출력 파일 (마지막 줄은 일명 33333333 인 outa)을 만든다. Excel 파일을 사용하여 텍스트 파일을 작성했기 때문에 이것이 가능하다고 생각하십니까? 원래 파일을 'cat'할 때 마지막 줄만 보여줍니다 ... 진행 방법에 대한 조언이 있습니까? – zp91

+0

Windows에서 Excel로 파일을 만들었으나 이제는 Linux에서 파일을 분할하려고합니다. 라인 엔딩 (line endings)에 문제가있는 것 같습니다. 파일에서'dos2unix'를 먼저 실행하여 줄 끝을 변환해야합니다. –

1

어때요?

가 가 가
file0 --> 11111111 
file1 --> 22222222 
file3 --> 33333333