다음과 같은 구조를 가진 거대한 텍스트 파일이 있습니다.
title;description;date
문제는 description
main에 다음과 같은 단락이 포함되어 있다는 것입니다.
title;description;data
MyText;Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam est dolor, molestie a rhoncus vel, congue sed diam. Vestibulum pellentesque libero eleifend dolor finibus vestibulum. Curabitur at suscipit tellus, at viverra ex. Nulla sem nibh, laoreet a porta a, convallis ac augue. Aliquam diam sapien, rutrum sed nulla lobortis, hendrerit rutrum diam. Donec tellus quam, maximus at mollis sit amet, consequat eget orci. Duis id vestibulum metus. Nulla convallis tortor diam, a tempus quam mollis sed. Aliquam at fermentum nibh, quis sodales orci. Maecenas viverra ultrices lobortis. Morbi viverra, tortor in mattis tincidunt, augue erat condimentum leo, a dignissim nulla lacus ac augue. Sed tincidunt rutrum sapien, sodales commodo sapien. Sed ultrices, augue vitae porta viverra, eros magna pellentesque leo, in bibendum enim enim non nulla. Nullam vel venenatis leo.
Sed sed vulputate nulla. Nullam hendrerit justo quis ante aliquet ullamcorper. Praesent at rhoncus ipsum, in sodales felis. Nam eu ante accumsan urna tempus rutrum at in felis. Maecenas eleifend enim nec augue eleifend, ut sagittis leo tincidunt. In non felis pretium, accumsan mi sit amet, hendrerit lectus. Nullam auctor mi non ligula aliquam commodo. Nunc mollis consequat purus, sit amet rutrum elit sodales sit amet. Suspendisse potenti. Ut a tempor urna. Etiam vitae venenatis ex.
Nunc ut mattis nibh. Morbi varius accumsan purus, vel facilisis eros suscipit id. Sed non accumsan arcu, pretium pulvinar urna. Quisque a neque faucibus, condimentum velit eget, varius lorem. Duis varius iaculis ullamcorper. Maecenas vitae fringilla mi, ultrices finibus justo. Suspendisse vel nibh tortor. Nullam ullamcorper justo augue, molestie lacinia lorem varius et. Etiam sed pulvinar metus, ac euismod arcu. Morbi laoreet dolor volutpat, tempor nunc sit amet, lobortis ipsum. Quisque posuere commodo sollicitudin. Vivamus consectetur ligula sed ante tristique congue. Duis faucibus lacus tellus, sed consectetur purus ornare vitae.;2023-07-12
macOS 터미널을 사용하여 이를 JSON으로 어떻게 변환합니까?
참고: 민감한 데이터 때문에 온라인 변환기를 사용하고 싶지 않습니다.
나는 다음과 같은 것을 시도했습니다
ruby -r json -r csv -e 'puts CSV.parse(STDIN, headers:true).map(&:to_h).to_json' < myFile.csv > myFile.json
그러나 이것들은 실패했습니다. 단락의 줄 바꿈을 CSV 줄의 끝과 다음 줄의 시작으로 해석하기 때문인 것 같습니다.
내가 할 때 줄과 단락 안에 구분 기호 표시가 cat -e myFile.csv
나타납니다 . $
같은 마크!
내가 볼때file
CSV
Unicode text, UTF-8 text, with very long lines, with CRLF line terminators
나는 무엇을 해야할지 모르겠습니다.
감사해요
답변1
가장 큰 문제는 CSV가 잘못되었다는 것입니다. 내부에 캐리지 리턴이 있는 셀에는 큰따옴표 구분 기호를 사용해야 합니다(아래 예).
사용밀러및 실행할 수 있는 올바른 CSV
mlr --c2j --ifs ";" cat input.csv
얻기 위해
{ "title": "MyText", "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam est dolor, molestie a rhoncus vel, congue sed diam. Vestibulum pellentesque libero eleifend dolor finibus vestibulum. Curabitur at suscipit tellus, at viverra ex. Nulla sem nibh, laoreet a porta a, convallis ac augue. Aliquam diam sapien, rutrum sed nulla lobortis, hendrerit rutrum diam. Donec tellus quam, maximus at mollis sit amet, consequat eget orci. Duis id vestibulum metus. Nulla convallis tortor diam, a tempus quam mollis sed. Aliquam at fermentum nibh, quis sodales orci. Maecenas viverra ultrices lobortis. Morbi viverra, tortor in mattis tincidunt, augue erat condimentum leo, a dignissim nulla lacus ac augue. Sed tincidunt rutrum sapien, sodales commodo sapien. Sed ultrices, augue vitae porta viverra, eros magna pellentesque leo, in bibendum enim enim non nulla. Nullam vel venenatis leo.\n\nSed sed vulputate nulla. Nullam hendrerit justo quis ante aliquet ullamcorper. Praesent at rhoncus ipsum, in sodales felis. Nam eu ante accumsan urna tempus rutrum at in felis. Maecenas eleifend enim nec augue eleifend, ut sagittis leo tincidunt. In non felis pretium, accumsan mi sit amet, hendrerit lectus. Nullam auctor mi non ligula aliquam commodo. Nunc mollis consequat purus, sit amet rutrum elit sodales sit amet. Suspendisse potenti. Ut a tempor urna. Etiam vitae venenatis ex.\n\nNunc ut mattis nibh. Morbi varius accumsan purus, vel facilisis eros suscipit id. Sed non accumsan arcu, pretium pulvinar urna. Quisque a neque faucibus, condimentum velit eget, varius lorem. Duis varius iaculis ullamcorper. Maecenas vitae fringilla mi, ultrices finibus justo. Suspendisse vel nibh tortor. Nullam ullamcorper justo augue, molestie lacinia lorem varius et. Etiam sed pulvinar metus, ac euismod arcu. Morbi laoreet dolor volutpat, tempor nunc sit amet, lobortis ipsum. Quisque posuere commodo sollicitudin. Vivamus consectetur ligula sed ante tristique congue. Duis faucibus lacus tellus, sed consectetur purus ornare vitae.", "data": "2023-07-12" }
올바른 CSV
title;description;data
MyText;"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam est dolor, molestie a rhoncus vel, congue sed diam. Vestibulum pellentesque libero eleifend dolor finibus vestibulum. Curabitur at suscipit tellus, at viverra ex. Nulla sem nibh, laoreet a porta a, convallis ac augue. Aliquam diam sapien, rutrum sed nulla lobortis, hendrerit rutrum diam. Donec tellus quam, maximus at mollis sit amet, consequat eget orci. Duis id vestibulum metus. Nulla convallis tortor diam, a tempus quam mollis sed. Aliquam at fermentum nibh, quis sodales orci. Maecenas viverra ultrices lobortis. Morbi viverra, tortor in mattis tincidunt, augue erat condimentum leo, a dignissim nulla lacus ac augue. Sed tincidunt rutrum sapien, sodales commodo sapien. Sed ultrices, augue vitae porta viverra, eros magna pellentesque leo, in bibendum enim enim non nulla. Nullam vel venenatis leo.
Sed sed vulputate nulla. Nullam hendrerit justo quis ante aliquet ullamcorper. Praesent at rhoncus ipsum, in sodales felis. Nam eu ante accumsan urna tempus rutrum at in felis. Maecenas eleifend enim nec augue eleifend, ut sagittis leo tincidunt. In non felis pretium, accumsan mi sit amet, hendrerit lectus. Nullam auctor mi non ligula aliquam commodo. Nunc mollis consequat purus, sit amet rutrum elit sodales sit amet. Suspendisse potenti. Ut a tempor urna. Etiam vitae venenatis ex.
Nunc ut mattis nibh. Morbi varius accumsan purus, vel facilisis eros suscipit id. Sed non accumsan arcu, pretium pulvinar urna. Quisque a neque faucibus, condimentum velit eget, varius lorem. Duis varius iaculis ullamcorper. Maecenas vitae fringilla mi, ultrices finibus justo. Suspendisse vel nibh tortor. Nullam ullamcorper justo augue, molestie lacinia lorem varius et. Etiam sed pulvinar metus, ac euismod arcu. Morbi laoreet dolor volutpat, tempor nunc sit amet, lobortis ipsum. Quisque posuere commodo sollicitudin. Vivamus consectetur ligula sed ante tristique congue. Duis faucibus lacus tellus, sed consectetur purus ornare vitae.";2023-07-12