텍스트 파일에 공백을 줄 바꿈으로 바꾸거나 입력하는 방법은 무엇입니까?


18

"example"이라는 간단한 텍스트 파일이 있습니다.

터미널 명령으로 읽기 : cat example

산출:

abc cdef ghi jk lmnopq rst uv wxyz

내가 원하는 변환 다음과 같은 형태로 (변환) : (예상 출력 cat example)

abc
cdef
ghi
jk
lmnopq
rst
uv
wxyz

명령 줄을 통해 어떻게 할 수 있습니까?

(이것은 예제 파일 일뿐 입니다. 수직 열로 단어의 위치 를 변환 하고 싶습니다 )


답변:


37

몇 가지 선택 :

  1. 고전적인 사용 tr:

    tr ' ' '\n' < example
    
  2. 사용하다 cut

    cut -d ' ' --output-delimiter=$'\n' -f 1- example
    
  3. 사용하다 sed

    sed 's/ /\n/g' example
    
  4. 사용하다 perl

    perl -pe 's/ /\n/g' example
    
  5. 껍질을 사용

    foo=$(cat example); echo -e ${foo// /\\n}
    

예를 sed들어 $실제 줄 바꿈으로 바꾸려면 bash 를 추가해야했습니다 .sed $'s/ /\\\n/g' example
acumartini

위의 OSX sed, gnu-sed의 예 :sed $'s/ /\\n/g'
acumartini

16

아래 명령을 시도하십시오

awk -v RS=" " '{print}' file

또는

awk -v RS='[\n ]' '{print}' file

예:

$ awk -v RS=" " '{print}' example
abc
cdef
ghi
jk
lmnopq
rst
uv
wxyz

설명:

RS (Record seperator)는 내장 awk 변수입니다. 첫 번째 명령에서 Record separator 변수에 제공되는 값은 공백입니다. 따라서 awk는 공간을 찾을 때마다 인쇄를 중단합니다.

두 번째 명령에서 RS 변수에 제공된 값은 공백 또는 줄 바꾸기 문자입니다.이 명령은 첫 번째 명령을 실행하는 동안 나타나는 여분의 빈 줄을 제거합니다.


8

을 사용할 수 있습니다 xargs.

cat example | xargs -n 1

또는 더 나은

xargs -n 1 < example

6
xargs -n 1 < example고양이 1
마리를

2

perl라이너 사용 :

perl -p -i -e 's/\s/\n/g' example

공백과 탭을 "ENTER"(일명 \n)로 바꿉니다.


1

아무도 파이썬을 게시하지 않았으므로 다음과 같습니다.

python -c "import sys;lines=['\n'.join(l.strip().split()) for l in sys.stdin.readlines()];print('\n'.join(lines))" < input.txt 

입력 파일을 pythonstdin 스트림 으로 리디렉션 하고 한 줄씩 읽습니다. 각 줄은 마지막 줄 바꿈을 제거하고 단어로 나눈 다음 각 단어를 줄 바꿈으로 구분하는 하나의 문자열로 다시 결합합니다. 이는 행당 하나의 단어가 있어야하고 옆에 여러 개의 공백이있는 경우 여러 줄 바꿈이 삽입되지 않도록하기 위해 수행됩니다. 서로. 결국 우리는 문자열 목록으로 끝나고, 다시 큰 문자열로 결합되고 stdout 스트림으로 출력됩니다. 나중에 리디렉션을 통해 다른 파일로 > out.txt 리디렉션 할 수 있습니다 .


0

위의 'tr'과 유사하지만 추가 사항이 있습니다.

  • 탭에서도 작동

  • 여러 공백이나 탭을 1 개의 줄 바꿈으로 변환

    tr -s '[:space:]' '\n' < example
    
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.