문자 중 하나에 "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"