IT

텍스트 파일에서 줄 바꿈을 어떻게 제거합니까?

lottoking 2020. 9. 15. 08:00
반응형

텍스트 파일에서 줄 바꿈을 어떻게 제거합니까?


다음 데이터는 모든 데이터를 한 줄에 입력해야합니다.

나는 요구 가지고있다 :

22791

;

14336

;

22821

;

34653

;

21491

;

25522

;

33238

;

나는 이것이 필요합니다 :

22791;14336;22821;34653;21491;25522;33238;

편집하다

이 명령 중 어느 것도 완벽하게 작동하지 않습니다.

대부분은 다음과 같은 데이터를 제공합니다.

22791

;14336

;22821

;34653

;21491

;25522

tr -d '\n' < yourfile.txt

편집하다 :

여기에 게시 된 명령이 작동하지 않는 경우 필드를 구분하는 줄 바꿈 외에 다른 것이 있습니다. 파일에 DOS / Windows 줄 끝이있을 수 있습니다 (이 경우에도 Perl 솔루션이 작동 할 예상하지만)?

시험 :

tr -d "\n\r" < yourfile.txt

그래도 작동하지 파일을 더 자세히 조사하여 (예 : 16 진수 편집기에서) 제거 할 문자가 있는지 찾아야합니다.


perl -p -i -e 's/\R//g;' filename

일을해야합니다.


paste -sd "" file.txt

tr -d '\n' < file.txt

또는

awk '{ printf "%s", $0 }' file.txt

또는

sed ':a;N;$!ba;s/\n//g' file.txt

이 페이지는 여기 제거 줄 바꿈에 다른 방법의 무리가 있습니다.

고양이 학대를 제거하기 위해 편집 :)


사용하다

head -n 1 filename | od -c 

불쾌한 캐릭터가 무엇인지. 그런 다음 사용

tr -d '\n' <filename

LF 용

tr -d '\r\n' <filename

CRLF 용


vim에서 파일을 편집 할 수 있습니다.

$ vim inputfile
:%s/\n//g

괴상한 사실 : 대신 ASCII를 사용하십시오.

tr -d '\012' < filename.extension   

(편집 된 원인은 동일한 솔루션을 가진 friggin '답변을 보지 못했으며 차이점은 ASCII가 있다는 것뿐이었습니다)


$ perl -0777 -pe 's / \ n + // g'입력> 출력
$ perl -0777 -pe 'tr / \ n // d'입력> 출력

데이터가 file.txt에있는 경우 :

echo $(<file.txt) | tr -d ' '

' $(<file.txt)'는 파일을 읽고 내용을 일련의 단어로 제공하고 'echo'는 그 사이에 공백을두고 에코합니다. 그런 다음 'tr'명령은 모든 공백을 삭제합니다.

22791;14336;22821;34653;21491;25522;33238;

man 1 ed 사용 :

# cf. http://wiki.bash-hackers.org/doku.php?id=howto:edit-ed 
ed -s file <<< $'1,$j\n,p'  # print to stdout 
ed -s file <<< $'1,$j\nwq'  # in-place edit

xargs 줄 바꿈도 사용합니다 (그러나 마지막 줄 바꿈을 추가합니다) :

xargs < file.txt | tr -d ' '

숫자와 세미콜론 만 유지하기를 원한다고 가정하면, 다음은 중요한 인코딩 문제가 없다고 가정하고 트릭을 수행해야하지만 마지막 "개행 문자"도 제거됩니다.

$ tr -cd ";0-9"

소수점, 쉼표 등을 유지하려는 경우 다른 문자를 포함하도록 위를 쉽게 수정할 수 있습니다.


gedit 텍스트 편집기 (3.18.3) 사용

  1. 검색 클릭
  2. 찾기 및 바꾸기 ...를 클릭합니다 .
  3. 입력 \n\s으로 찾기 필드
  4. 남겨 교체하지 (아무) 빈
  5. 정규식 체크 박스
  6. 찾기 버튼을 클릭하십시오

참고 : 이것은 OP의 원래 7 년 된 문제를 정확히 해결하지는 못하지만 유사한 "내 텍스트를 한 줄에 모두 가져 오는 방법"질문을 통해 SE에서 여기로가는 길을 찾는 멍청한 리눅스 사용자 (나와 같은)를 도울 것입니다. .


오늘 같은 경우가 있었는데, vim 또는 nvim에서 매우 쉬웠으며 gJ라인을 결합 하는 사용할 수 있습니다 . 사용 사례의 경우

99gJ

이것은 당신의 모든 99 라인에 합류합니다. 99가입 할 라인 수에 따라 필요에 따라 번호 조정할 수 있습니다 . 다만 가입하면 1 개 라인을, 만 gJ좋은 충분하다.


나는 awk로 할 것입니다.

awk '/[0-9]+/ { a = a $0 ";" } END { print a }' file.txt

(단점은 a가 메모리에 "누적"된다는 것입니다).

편집하다

printf를 잊어 버렸습니다! 그래서 또한

awk '/[0-9]+/ { printf "%s;", $0 }' file.txt

또는 아마도 awk를 사용하여 다른 ans에서 이미 주어진 것입니다.


나는 일반적으로 파일에서 코드 스 니펫을 복사하고 불필요한 새 줄을 추가하지 않고 콘솔에 붙여 넣고 싶을 때이 유스 케이스를 얻습니다 .bash 별칭을 사용하게되었습니다
( oneline호기심이 있으면 호출했습니다 )

xsel -b -o | tr -d '\n' | tr -s ' ' | xsel -b -i
  • xsel -b -o 내 클립 보드를 읽습니다.

  • tr -d '\n' 새 줄을 제거합니다.

  • tr -s ' ' 반복되는 공간을 제거합니다.

  • xsel -b -i 이것을 내 클립 보드로 다시 푸시합니다.

그 후 클립 보드의 새 내용을 콘솔 등의 한 줄에 붙여 넣습니다.


특히 이상한 단어 줄 바꿈을 수정하기 위해 GUI에서이 작업을 수행해야 할 때 가장 분명하고 빠른 대답을 놓치고 있습니다.

  • 열다 gedit

  • 그런 다음 Ctrl+ H, Find텍스트 상자 \nReplace with빈 공간에 넣은 다음 확인란 Regular expression과 짜잔 을 채우십시오 .


POSIX 클래스 와 함께 sed 사용

공백 (공백 및 탭) 만 포함 된 모든 줄이 제거됩니다.

sed '/^[[:space:]]*$/d'

작업중인 모든 것을 가져 와서 파이프로 연결하십시오.

cat filename | sed '/^[[:space:]]*$/d'


파일 끝에서 후행 줄 바꿈도 제거하려면

python -c "s=open('filename','r').read();open('filename', 'w').write(s.replace('\n',''))"

참고 URL : https://stackoverflow.com/questions/3134791/how-do-i-remove-newlines-from-a-text-file

반응형