![txt 파일의 줄을 bash의 Excel 열로 분할](https://rvso.com/image/1070318/txt%20%ED%8C%8C%EC%9D%BC%EC%9D%98%20%EC%A4%84%EC%9D%84%20bash%EC%9D%98%20Excel%20%EC%97%B4%EB%A1%9C%20%EB%B6%84%ED%95%A0.png)
다음과 같은 텍스트 파일(lines.txt)이 있습니다.
ab.qq
1
2
3
cd.qq
3
4
5
ef.qq
7
8
9
그리고 Excel/csv 파일의 모든 4번째 행에서 다른 열로 이동하려고 합니다. 기본적으로 이 bash 스크립트로 인쇄되는 내용은 다음과 같습니다.
#!/bin/bash
split -l 4 lines.txt outsq
paste -d ' ' outsq*
ab.qq cd.qq ef.qq
1 3 7
2 4 8
3 5 9
이것을 Excel/CSV 파일에 작성하는 데 도움을 주시면 감사하겠습니다. 또한 결과를 생성하는 다른 방법은 분할/붙여넣기 없이 확실히 괜찮습니다.
답변1
(rs
아르 자형이자형에스hape) 유틸리티는 원래 BSD에서 나온 것인데 이런 종류의 작업에 유용합니다.
예를 들어:
$ rs -e -t 4 0 < lines.txt
ab.qq cd.qq ef.qq
1 3 7
2 4 8
3 5 9
어디
-e
각 입력 줄을 요소로 처리한다고 말합니다.-t
열을 행으로 바꿉니다.4 0
4개의 행과 필요한 만큼의 열을 출력합니다.
및 옵션 -c
은 -C
각각 입력 및 출력 구분 문자를 설정하므로 CSV 출력의 경우 사용할 수 있습니다
$ rs -etC, 4 0 < lines.txt
ab.qq,cd.qq,ef.qq,
1,3,7,
2,4,8,
3,5,9,
rs
Ubuntu 저장소에서 동일한 이름의 패키지로 제공됩니다 universe
.
또는 awk에서 다음과 같은 작업을 수행할 수도 있습니다.
$ awk '
{a[NR%4] = a[NR%4] == "" ? $0 : a[NR%4] "," $0}
END {for(i=1;i<=4;i++) print a[i%4]}
' lines.txt
ab.qq,cd.qq,ef.qq
1,3,7
2,4,8
3,5,9