행을 단일 확장 열로 변환

행을 단일 확장 열로 변환

안녕하세요. row1 데이터를 가져와서 열에 넣은 다음 row2에서도 동일한 작업을 수행하고 열을 확장하고 싶습니다.

전임자:

이것

 1   2   3   4   5
 6   7   8   9  10
11  12  13  14  15
16  17  18  19  20
21

이와 관련하여

1
2
3
4
5
6
7
8
9
10
...

Bash에서 어떻게 할 수 있나요?

감사해요.

답변1

GNU를 사용하면 grep다음을 사용할 수 있습니다.

grep -Eo '\S+'

한 줄에 +하나 이상의 공백이 아닌 문자( )의 모든 시퀀스를 인쇄합니다.\S

답변2

몇 가지 추가 옵션:

  1. 를 사용 awk하고 출력 필드 구분 기호를 개행 문자로 설정합니다.

    awk '{NF+=0} 1' OFS='\n' file
    
  2. 사용 rs(아르 자형이자형에스hape) 출력 열 수를 설정하는 유틸리티 1( 0행 수는 "필요한 수"를 나타냄)

    rs 0 1 < file
    

답변3

일련의 공백을 개행 문자로 바꾸는 것이 가장 쉬운 것 같습니다.

tr이 작업을 수행할 수 있습니다( -s핵심은 다음과 같습니다).

$ tr -s ' ' '\n' < file.txt 

첫 번째 줄은 앞에 공백이 있기 때문에 비어 있습니다 1.

또는 GNU sed를 사용하십시오:

sed -E -e 's/^ +//; s/ +$//; s/ +/\n/g' < file.txt 

처음 두 대체 항목은 가짜 빈 줄을 방지하기 위해 각 줄의 선행 및 후행 공백을 제거합니다.

(이것이 작동하려면 GNU sed가 필요합니다 \n.)

관련 정보