입력 파일:
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