쉼표 사이의 문자열 주위에 따옴표를 추가하되 숫자 주위에는 따옴표를 추가하지 마세요.

쉼표 사이의 문자열 주위에 따옴표를 추가하되 숫자 주위에는 따옴표를 추가하지 마세요.

그래서 내 파일에는 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]*$/- 패턴은 숫자 이외의 문자가 포함된 필드에만 일치합니다.

관련 정보