![숫자에 영향을 주지 않고 파일의 문자열을 구분 기호로 바꾸려면 어떻게 해야 합니까? [폐쇄]](https://linux55.com/image/120544/%EC%88%AB%EC%9E%90%EC%97%90%20%EC%98%81%ED%96%A5%EC%9D%84%20%EC%A3%BC%EC%A7%80%20%EC%95%8A%EA%B3%A0%20%ED%8C%8C%EC%9D%BC%EC%9D%98%20%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%84%20%EA%B5%AC%EB%B6%84%20%EA%B8%B0%ED%98%B8%EB%A1%9C%20%EB%B0%94%EA%BE%B8%EB%A0%A4%EB%A9%B4%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%ED%95%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EA%B9%8C%3F%20%5B%ED%8F%90%EC%87%84%5D.png)
입력 파일:
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