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