문장 끝에 나타나는 공백 두 개를 모두 공백 하나로 바꿉니다.

문장 끝에 나타나는 공백 두 개를 모두 공백 하나로 바꿉니다.

sed 명령에 정규식을 포함하는 데 문제가 있습니다.

묻다:뒤에 나타나는 두 개의 공백을 모두 바꾸고 싶습니다.문장의 끝한 번만 사용할 수 있는 공간이 있습니다.

내가 한 일은 다음과 같습니다.

sed 's/^ $/^$/' file  

그리고 문장이 끝난 후 공백 두 개를 공백 하나로 바꾸지 않습니다.

내가 얻는 결과는 다음과 같습니다.

This is the output.  Hello Hello

내가 원하는 출력:

This is the output. Hello Hello

답변1

귀하의 sed명령은 's/^ $/^$/'귀하가 원하는 대로 작동하지 않습니다. 단순히 공백이 포함된 모든 줄을 단일 공백이 포함된 줄로 대체합니다 ^$.

문장의 끝을 표시하는 문자에 따라 다음을 수행할 수 있습니다.

sed -e 's/\([.?!]\) \{2,\}/\1 /g' <file

이렇게 하면 2개 이상의 공백 또는 1개의 공백만 대체 .됩니다 .?!

답변2

 sed 's/\.   */. /g' < file

점 뒤에 두 개 이상의 공백이 오는 것을 점 뒤에 공백이 오는 것으로 바꾸십시오.

답변3

이것이 당신이 찾고 있는 것일 수도 있습니다.

tr -s " " <filename

견본,

$ echo "This is the output.  Hello Hello" | tr -s "[:blank:]"
This is the output. Hello Hello

사용 sed,

$ echo "This is the output.  Hello Hello" | sed 's/\. \+/. /g'
$ echo "This is the output.  Hello Hello" | sed 's/\. \{1,\}/. /g'
This is the output. Hello Hello

관련 정보