마지막 줄을 제외한 모든 줄 바꿈을 공백으로 바꿉니다.


38

마지막 개행을 제외한 모든 개행을 공백으로 바꾸려면 어떻게해야합니까? 모든 줄 바꿈을 사용하여 공백으로 바꿀 수 tr있지만 일부 예외로 어떻게 할 수 있습니까?

답변:


42

당신은 사용할 수 있습니다 paste -s -d ' ' file.txt:

$ cat file.txt
one line
another line
third line
fourth line

$ paste -s -d ' ' file.txt 
one line another line third line fourth line

1
시원한! -s-d옵션은이 경우에 만든처럼 보인다.
mkc

10

tr모든 개행을 공백으로 바꾸고 출력을 전달 sed하고 마지막 공백 을 개행으로 바꾸는 데 사용할 수 있습니다 .

tr '\n' ' ' < afile.txt | sed '$s/ $/\n/'

5

파일이 충분히 작은 경우 Perl에서 vonbrand의 아이디어 를 다시 구현 합니다.

perl -p00e 's/\n(?!\Z)/ /g' your_file

이 방법은 멀티 바이트 문자 (GNU 붙여 넣기와 반대)로 대체 할 수 있기 때문에 +1
myrdd


-1

이것은 나를 위해 일했습니다.

tr '\n' ' ' < file_with_new_line   | sed 's/\ $//g' > file_with_space

마지막 줄 바꿈도 제거됩니다.
terdon

나는 그렇게 생각하지 않는다, 그것은 잘 작동하고있다. 당신은 정말로 그것을 시도 했습니까 ???
Abhijit

네, 있어요. 당신은? 귀하의 tr명령은 대체 모두 공백으로 줄 바꿈을하고 sed명령은 마지막으로 공간을 제거합니다. 결과적으로 최종 개행 문자가없는 파일이 생성되므로 질문에서 요구하는 것이 아닙니다. 그건 그렇고, 명령 g에서 사용 하는 것이 중요하지 않습니다 sed. 를 사용하고 있기 때문에 $끝에 만 일치 할 수 있습니다 g. 또한 공간을 벗어날 필요가 없습니다 .``도 아무런 차이가 없습니다.
terdon
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.