sed + 문자 중 하나에 "m" 또는 "M"이 포함된 경우 단어를 삭제하는 방법

sed + 문자 중 하나에 "m" 또는 "M"이 포함된 경우 단어를 삭제하는 방법

문자 중 하나에 "m" 또는 "M"이 포함된 경우 어떻게 단어를 삭제할 수 있나요?

나는 이것을 시도했지만 작동하지 않습니다.

 echo 6.5G 66.5m | sed -e 's/[m][M]//g'

답변1

귀하의 sed 명령은 다음과 같습니다

s/[m][M]//g

mM일치 항목을 요청했기 때문에 입력에서 문자열만 제거됩니다.

  • 컬렉션에 있는 모든 항목 m, 그 뒤에
  • 컬렉션의 모든 것 M.

당신은 글을 쓰고 싶었을 수도 있습니다 [Mm]. 그러나 명령에 옵션을 추가 하면 /i동일한 효과를 얻을 수 있습니다 s.

s/m//ig

이제 대문자나 소문자를 모두 제거합니다 m.

$ echo 6.5G 66.5m | sed -e s/m//ig
6.5G 66.5

귀하의 질문은 해당 문자가 포함된 전체 단어를 제거하는 방법을 묻습니다. 이렇게 하려면 앞뒤에 공백이 아닌 문자를 일치시켜야 합니다. [^ ]하나의 공백이 아닌 문자와 일치하고 [^ ]*0개 이상의 공백이 아닌 문자와 일치하므로 우리는

s/[^ ]*m[^ ]*//ig

이것을 테스트해 보세요:

$ echo 6.5G 66.5m | sed -e 's/[^ ]*m[^ ]*//ig'
6.5G 

그리고

$ echo Five Merry Women went fishing | sed -e 's/[^ ]*m[^ ]*//ig'
Five   went fishing

답변2

$ echo 6.5G 66.5m | sed -e 's/[[:space:]].*[mM]//g'
6.5G

"m"과 "M"은 패턴을 형성합니다. 작동하지 않는 버전에서는 "m" 다음에 "M"이 오는 것을 찾습니다.

답변3

삭제하고 싶다면 다음을 시도해 보세요.

[root@connect ~]# echo 6.5M 66.5m | sed -e 's/m//g' | sed -e 's/M//g'
6.5 66.5

답변4

이렇게 해 보세요. "m" 또는 "M"이 포함된 줄이 삭제됩니다.

echo 6.5G 66.5m | sed "/[mM]/d"

관련 정보