다음은 내 txt 파일의 예입니다.
John
NY
2019
APR
Mark
SC
2019
JAN
Ava
CA
2018
AUG
다음은 대상 txt 파일의 예입니다.
Name,Location,Year,Month
John, NY,2019,APR
Mark, SC,2019,JAN
Ava, CA,2018,AUG
필드 수는 변경되지 않습니다. 기본적으로 모든 4번째 행이 월이고 그 다음 행이 이름임을 인식하는 스크립트를 어떻게 작성합니까?
답변1
두 가지 잠재적인 질문 중 어느 것을 묻는지 알 수 없습니다. 따라서 두 가지에 대한 광범위한 개요를 제공하고 이를 알아낼 시간이 있으면 사용하고 있는 실제 터미널/셸을 살펴보겠습니다. 내일 아침 명령(그런 다음 내 답변을 확장하세요!)
따라서 귀하의 질문은 다음과 같이 이해될 수 있습니다.
- a): 파일을 "행별"에서 "테이블 유사"로 정렬합니다(귀하의 예에서는 다음과 같습니다).씨오마-에스분리-V숫자 파일 [라고도 함데이터 세트]) 마련하다. 이는 실제로 매우 간단하며 루프 구조(예: 각 항목에 대해 동일한 명령 집합 반복)가 필요하며 그 안에서 항목을 구성하는 4개 행의 값(예: "John", "NY")을 가져옵니다. ), "2019" ","APR" )을 입력하고 값 사이에 쉼표(",")를 삽입하여 새 행에 차례로 추가합니다.
- b): 변수 유형에 따라 파일 값을 정렬한 다음 모든 것을 순서가 지정된 "테이블" 구조로 다시 조립합니다(예: csv 파일의 경우 출력은 위에서 설명한 것과 매우 유사합니다). 약간 까다롭거나 복잡하지만 값/변수 범위가 제한되어 있는 한 - 예(월에 대한 12개의 3문자 약어, 미국 주에 대한 50개의 2문자 약어 등)와 같이 각 값을 변환할 수 있습니다. 가능한 변수의 집합/범위와 비교하여 어떤 유형의 변수인지 (상대적으로 안정적으로) 결정합니다. 그런 다음 위에서 설명한 것보다 약간 더 많은 마법/접착제를 사용하여 올바른 위치에 배치하면 구슬처럼 새 문서에 연결할 수 있습니다. 항목에 속하는 항목의 순서가 항상 같은 것은 아닙니다.)
지금은 그게 다입니다. 터미널/셸 예제를 입력하기 전에 위의 두 가지 질문 중 어떤 질문을 언급하고 있는지 아는 것이 좋을 것입니다. :D!
감사합니다, Sean Scherer
답변2
여기에는 정렬이 포함되지 않은 것 같습니다. 단지 고정된 수의 열(4)로 역직렬화하는 것뿐입니다. 당신은 그것을 사용할 수 있습니다
paste -d, - - - - < file
또는
pr -aT -s, -4 < file
또는
awk '{ORS = NR%4 ? "," : "\n"} 1' file
전임자.
$ awk 'BEGIN{print "Name,Location,Year,Month"} {ORS = NR%4 ? "," : "\n"} 1' file
Name,Location,Year,Month
John,NY,2019,APR
Mark,SC,2019,JAN
Ava,CA,2018,AUG