한 줄을 3 열로 여러 줄로 나누는 방법이 있습니다. 파일의 모든 줄 끝에 새 줄 문자가 없습니다.
awk를 사용해 보았지만 각 행에 3 개의 열이 아닌 하나의 행으로 각 열을 분할하고 있습니다.
awk '{ gsub(",", "\n") } 6' filename
여기서 filename
'같은 내용 모습을 S :
A,B,C,D,E,F,G,H,I,J,K,L,M,N,O
원하는 출력에는 각 줄에 3 개의 열이 있습니다.
A,B,C
D,E,F
G,H,I
J,K,L
M,N,O
awk
$ awk -v RS='[,\n]' '{a=$0;getline b; getline c; print a,b,c}' OFS=, filename
A,B,C
D,E,F
G,H,I
J,K,L
M,N,O
-v RS='[,\n]'
이것은 awk에게 쉼표 나 줄 바꿈을 레코드 분리 자로 사용하도록 지시합니다.
a=$0; getline b; getline c
이것은 awk에게 현재 줄을 변수 a
에, 다음 줄을 varaible에 b
, 그 다음 줄을 변수에 저장하도록 지시 합니다 c
.
print a,b,c
이 이야기 AWK 인쇄하기 a
, b
및c
OFS=,
이것은 awk에게 출력에서 필드 구분자로 쉼표를 사용하도록 지시합니다.
tr
및 사용paste
$ tr , '\n' <filename | paste -d, - - -
A,B,C
D,E,F
G,H,I
J,K,L
M,N,O
tr , '\n' <filename
이것은 모든 쉼표를 개행으로 변환하는 동안 파일 이름에서 읽습니다.
paste -d, - - -
이것은 paste
stdin에서 세 줄 (각각에 하나씩 -
) 을 읽고 쉼표 ( -d,
) 로 구분하여 함께 붙여 넣습니다 .
$ awk -v RS='[,\n]' '{printf "%s%s",$0,(NR%3?",":"\n")}' filename
A,B,C
D,E,F
G,H,I
J,K,L
M,N,O
-v RS='[,\n]'
이것은 awk에게 쉼표 나 줄 바꿈을 레코드 분리 자로 사용하도록 지시합니다.
printf "%s%s",$0,(NR%3?",":"\n")
이것은 awk에게 현재 줄 번호의 값에 따라 쉼표 또는 줄 바꿈 뒤에 현재 줄을 인쇄하도록 지시 NR
합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다