중간에 하이픈/공백이 포함된 숫자 값이 포함된 파일이 있습니다. 이를 공백으로 바꿔야 합니다(예: 333-44-5555 / 333 44 5555).
grep '[0-9]\{3\}-[0-9]\{2\}-[0-9]\{4\}'
grep '[0-9]\{3\} [0-9]\{2\} [0-9]\{4\}' ==> fetches me with all cases;
그러나 그것을 교체하는 방법.
답변1
이것이 당신이 원하는 것입니까( -E
GNU sed 및 OSX/BSD sed와 같은 ERE 지원 옵션과 함께 sed 사용)?
sed -E 's/([0-9]{3})-([0-9]{2})-([0-9]{4})/\1 \2 \3/g'
예를 들어:
$ echo '333-44-5555' | sed -E 's/([0-9]{3})-([0-9]{2})-([0-9]{4})/\1 \2 \3/g'
333 44 5555
-
텍스트에 공백으로 변환하고 싶지 않은 다른 내용이 있다고 가정합니다 . 그렇지 않으면 tr '-' ' ' < file
간단한 내용만 있으면 됩니다.
아래 의견을 바탕으로 편집하면 이것이 정말로 원하는 것 같습니다.
sed -E 's/[0-9]{3}[- ][0-9]{2}[- ][0-9]{4}/ /g'
답변2
sed -i.bak 's/-/ /' filename
원본 파일의 백업을 유지하면서 파일 전체에서 "-"를 실제 공백으로 대체합니다.
전체 문자열을 바꾸십시오.
sed -i .bak 's/[0-9]\{3\}-[0-9]\{2\}-[0-9]\{4\}/ /'
답변3
이것이 내가 사용하는 것입니다. 원본 파일을 유지하고 그 결과를 사용하여 새 파일을 만듭니다.
sed 's/-/ /g' file.txt > newfile.txt
먼저 사본을 시험해보고 확인하십시오.