2017-11-19 12 views
0

나는 터미널에서 독점적으로 일하는 것에 익숙하지 않으며 조금 붙어 있습니다. 신경망을 사용하여 텍스트 샘플을 생성하고 각 샘플에서 모든 줄 바꿈 문자와 캐리지 리턴을 제거하려고합니다. 그런 다음 샘플을 텍스트 파일에 쓰고 싶습니다.파일에 쓰기 전에 RNN 생성 된 텍스트에서 공백을 제거하는 스크립트

지금까지 파일에 100 개의 샘플을 쓰려고했지만 파일에 쓰여지기 전에 각 샘플에서 줄 바꿈 문자와 캐리지 리턴을 제거하는 방법을 알아낼 수 없습니다.

for ((i=1;i<=100;i++)) ; do th sample.lua -checkpoint cv/checkpoint_10000.t7 -length 93 -gpu -1 >> sample.txt ; done

는 기본적으로 나는 그들의 중간에 캐리지 리턴이 단지 자신의 한 줄에 각 샘플을 얻으려면 몇 가지 샘플을 가지고있다. 최선의 접근법?

편집 : 작동합니다!

for ((i=1;i<=100;i++)) ; do th sample.lua -checkpoint cv/checkpoint_10000.t7 -length 93 -sample 1 -gpu -1 | tr -d "\r\t\n" | sed 's/./&\n/93' >> sample.txt ; done

+1

하는 경우 그 코드는'bash'이고, 오타가 있습니다. 여기에 :'; >> sample.txt; done' – agc

답변

2

이 작업을 수행하는 가장 쉬운 방법은 tr를 통해 아마도 :

tr '\n\r' ' ' < intput-file > output-file 
+0

이 구문을 설명 할 수 있습니까? 나는 입력 파일이 없다. 신경망은 텍스트 샘플을 생성하고 있으며 파일에서 가져 오지 않습니다. – Daina

+1

@Daina ha. agc는 그것에 나를 때렸다. 'tr'은 두개의 인자를 취합니다. 하나는 문자 집합이고 다른 하나는 문자 집합입니다. 'tr'은 첫 번째 문자 집합을 두 번째 집합으로 "변환"합니다. 귀하의 경우 모든 새로운 행을 제거하고자합니다 (새로운 행은 '\ n', '\ r \ n'또는 '\ r'을 다른 플랫폼에서 의미 함). 따라서 스크립트는 모든 새 행을 공백으로 바꿉니다. "|" AGC의 대답에서 유닉스에 "파이프"라고합니다. 왼쪽면을 입력으로 처리합니다. ">"는 리디렉션이라고합니다. 'tr'의 출력은 기본적으로 터미널에 직접 출력됩니다. ">"를 사용하면 출력을 지정된 파일로 "재지향"합니다. – realharry

+2

리턴/개행 문자의 실행을 단일 공간으로''tr -s '\ r \ n "' ''사용하여"squeeze "할 수 있습니다. –

1

이 작동 될 수 있습니다

for ((i=1;i<=10000;i++)) ; do 
    th sample.lua -checkpoint cv/checkpoint_10000.t7 -length 93 | tr `\n\r' ' ' 
    echo 
done > sample.txt 

(tr 코드 realharry's answer에서 도난.)