빈 공간을 삭제하기 위해 sed


28

누구든지 Sed를 사용하여 텍스트 파일의 모든 공백을 삭제하는 방법을 알고 있습니까? "d"delete 명령을 사용하려고했지만 알아낼 수없는 것 같습니다.

답변:


35

어떤 종류의 "공간"?

"공백을 모두 삭제"한다는 것은 다른 것 중 하나를 의미 할 수 있습니다.

  1. 공백 문자 code를 모두 삭제하십시오 0x20.
  2. 가로 탭 문자 " \t"를 포함하여 모든 가로 공간을 삭제하십시오.
  3. 개행, " \n"및 기타를 포함하여 모든 공백을 삭제하십시오.

작업에 적합한 도구

sed숨겨진 이유로 요구 사항이 아닌 경우 작업에 적합한 도구를 사용하는 것이 좋습니다.

이 명령 tr은 문자 목록을 다른 문자 목록으로 변환하는 데 주로 사용됩니다 (따라서 이름은 "tr"). 모퉁이의 경우 빈 문자 목록으로 변환 될 수 있습니다. 옵션 -d( --delete)은 목록에 나타나는 문자를 삭제합니다.

문자 목록은 [:...:]구문 에서 문자 클래스를 사용할 수 있습니다 .

  1. tr -d ' ' < input.txt > no-spaces.txt
  2. tr -d '[:blank:]' < input.txt > no-spaces.txt
  3. tr -d '[:space:]' < input.txt > no-spaces.txt

주장 할 때 sed

sed를 사용하면 [:...:]문자 클래스의 구문을 regexps의 문자 세트 구문과 결합해야 [...]하므로 다소 혼란스러워집니다 [[:...:]].

  1. sed 's/ //g' input.txt > no-spaces.txt
  2. sed 's/[[:blank:]]//g' input.txt > no-spaces.txt
  3. sed 's/[[:space:]]//g' input.txt > no-spaces.txt

1
+1, 공백에 대한 POSIX 표기법이 적절한 방법입니다.
Avinash Raj

1
이 작업에 tr을 사용하는 훌륭한 힌트는 훌륭합니다. 내가 조정해야 할 것은 tr이 stdin의 입력을 읽는 것이므로 나를 위해 일한 것은이었습니다 tr -d ' ' < input.txt > no-spaces.txt.
Sky

@Sky의 의견은 내 macOS에서 작동합니다 (Linux에서는 테스트되지 않음). 아마도 대답을 업데이트해야합니까?
iplus26

@Sky에 감사드립니다. 실제로 나쁜 오류입니다. tr이제 세 줄을 수정하겠습니다 . (다른 곳에서도 보입니까?)
Volker Siegel

7

이것을 사용하여 다음의 모든 공백을 제거 할 수 있습니다 file.

 sed -i "s/ //g" file

2
주사위가 없습니다. 나는 비슷한 접근법을 시도했다. 작동하지 않음
Justin

공백이나 탭을 삭제 하시겠습니까?
Cyrus

1
공백을 삭제
Justin

2
간단한 테스트 :man sed | sed "s/ //g"
Cyrus

1
@starscream_disco_party : 동일합니다. 3 개 /를 모두 다른 문자로 바꿀 수 있습니다 . 예 :sed "ss ssg"
Cyrus
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.