첫 번째 열을 유지하면서 한 줄을 여러 줄로 나눕니다.

첫 번째 열을 유지하면서 한 줄을 여러 줄로 나눕니다.

텍스트 파일의 형식을 다시 지정할 수 있는 방법이 있습니까?

'n      n / [ ] / m / N        
'ns      @ s / @ z / @ / j @ z / j @ s        
'r      r        
's      s / z / [ ]    
...

에게

'n      n 
'n      [ ] 
'n      m
'n      N        
'ns      @ s 
'ns      @ z 
'ns      @ 
'ns      j @ z 
'ns      j @ s        
'r      r        
's      s 
's      z 
's      [ ]    
...

즉, /한 줄에서 s를 만나면 첫 번째 열을 유지하면서 이 줄은 s의 위치에 따라 분할됩니다 /(첫 번째 열 다음에는 항상 6개의 공백이 있습니다).

나는 tr / '\n' < filename1 > filename2선이 다음과 같이 분할 될 수 있도록 시도했습니다.

'n      n 
 [ ] 
 m 
 N        
 'ns      @ s 
 @ z 
 @ 
 j @ z 
 j @ s        
 'r      r        
 's      s 
 z 
 [ ]  
...

하지만 연속된 줄의 첫 번째 열은 유지할 수 없었습니다.

답변1

모든 Unix 상자의 모든 쉘에서 awk:

첫 번째 필드와 줄의 나머지 부분 사이에 있는 탭인 경우:

$ awk 'BEGIN{FS=OFS="\t"} {n=split($2,f," */ *"); for (i=1; i<=n; i++) print $1, f[i]}' file
'n      n
'n      [ ]
'n      m
'n      N
'ns     @ s
'ns     @ z
'ns     @
'ns     j @ z
'ns     j @ s
'r      r
's      s
's      z
's      [ ]

또는 일련의 빈 문자인 경우:

$ awk 'match($0,/[^ ]+ +/){key=substr($0,1,RLENGTH); n=split(substr($0,1+RLENGTH),f," */ *"); for (i=1; i<=n; i++) print key, f[i]}' file
'n       n
'n       [ ]
'n       m
'n       N
'ns      @ s
'ns      @ z
'ns      @
'ns      j @ z
'ns      j @ s
'r       r
's       s
's       z
's       [ ]

또는 전면에 고정된 8자 너비 필드인 경우 다음 중 하나를 수행할 수 있습니다.

$ awk '{key=substr($0,1,8); n=split(substr($0,9),f," */ *"); for (i=1; i<=n; i++) print key, f[i]}' file
'n       n
'n       [ ]
'n       m
'n       N
'ns      @ s
'ns      @ z
'ns      @
'ns      j @ z
'ns      j @ s
'r       r
's       s
's       z
's       [ ]

또는:

$ awk '{n=split(substr($0,9),f," */ *"); for (i=1; i<=n; i++) printf "%-8s%s\n", $1, f[i]}' file
'n      n
'n      [ ]
'n      m
'n      N
'ns     @ s
'ns     @ z
'ns     @
'ns     j @ z
'ns     j @ s
'r      r
's      s
's      z
's      [ ]

답변2

sed  "s/ /\//" filename| awk -F "/" '{for(i=2;i<=NF;i++)print $1,$i}'

산출

'n      n 
'n  [ ] 
'n  m 
'n  N        
'ns      @ s 
'ns  @ z 
'ns  @ 
'ns  j @ z 
'ns  j @ s        
'r      r        
's      s 
's  z 
's  [ ]   

관련 정보