![쉼표 사이의 문자열 주위에 따옴표를 추가하되 숫자 주위에는 따옴표를 추가하지 마세요.](https://linux55.com/image/110300/%EC%89%BC%ED%91%9C%20%EC%82%AC%EC%9D%B4%EC%9D%98%20%EB%AC%B8%EC%9E%90%EC%97%B4%20%EC%A3%BC%EC%9C%84%EC%97%90%20%EB%94%B0%EC%98%B4%ED%91%9C%EB%A5%BC%20%EC%B6%94%EA%B0%80%ED%95%98%EB%90%98%20%EC%88%AB%EC%9E%90%20%EC%A3%BC%EC%9C%84%EC%97%90%EB%8A%94%20%EB%94%B0%EC%98%B4%ED%91%9C%EB%A5%BC%20%EC%B6%94%EA%B0%80%ED%95%98%EC%A7%80%20%EB%A7%88%EC%84%B8%EC%9A%94..png)
그래서 내 파일에는 CSV 형식을 거의 나타내는 일부 텍스트가 있지만 정확하지는 않습니다. 하지만 CSV 파일로 변환하고 싶습니다.
예를 들면 다음과 같습니다.
cuz,0,1,2,3,-4,abc,a b c,0
어떻게 하면 그것을 바꿀 수 있나요?
"cuz",0,1,2,3,-4,"abc","a b c",0
어떤 도움이라도 대단히 감사하겠습니다!
미리 감사드립니다.
답변1
멍하니방법:
gawk -i inplace -F, '{for(i=1;i<=NF;i++){
if ($i!~/^-?[0-9]*$/) $i=sprintf("\"%s\"",$i); }}1' OFS=',' file
콘텐츠 file
:
"cuz",0,1,2,3,-4,"abc","a b c",0
-i inplace
- 허용하다제자리에파일 수정
$i!~/^-?[0-9]*$/
- 패턴은 숫자 이외의 문자가 포함된 필드에만 일치합니다.