숫자에 영향을 주지 않고 파일의 문자열을 구분 기호로 바꾸려면 어떻게 해야 합니까? [폐쇄]

숫자에 영향을 주지 않고 파일의 문자열을 구분 기호로 바꾸려면 어떻게 해야 합니까? [폐쇄]

입력 파일:

123 exx abcdef 890 hello-hi-welcome and name in-India 1 3.45 1.3538 8.773
456 hfjgt 928 aetr-new-abc-India 1 9.7392 18.1903 8.752

산출:

123,exx abcdef,890,hello-hi-welcome and name in-India,1,3.45,1.3538,8.773
456,hfjgt,928,aetr-new-abc-India,1,9.7392,18.1903,8.752

이를 위해 쉘 스크립트를 어떻게 작성합니까?

답변1

숫자 앞이나 뒤의 공백을 변경하는 것으로 충분하다고 생각합니다.

$ sed -r 's/([[:digit:]]) /\1,/g; s/ ([[:digit:]])/,\1/g' file
123,exx abcdef,890,hello-hi-welcome and name in-India,1,3.45,1.3538,8.773
456,hfjgt,928,aetr-new-abc-India,1,9.7392,18.1903,8.752

답변2

각 행에서 숫자 항목과 숫자가 아닌 항목을 분리하고 싶다고 생각합니다.

암소 비슷한 일종의 영양해결책:

awk -v FPAT='[0-9]+|[0-9]+\\.[0-9]+|[^0-9]{2,}' '{ 
           for(i=1;i<=NF;i++) { 
               gsub(/^ *| *$/,"",$i); printf "%s%s",$i,(i==NF? ORS:OFS) 
           } 
}' OFS=',' file

산출:

123,exx abcdef,890,hello-hi-welcome and name in-India,1,3.45,1.3538,8.773
456,hfjgt,928,aetr-new-abc-India,1,9.7392,18.1903,8.752

관련 정보