delete 및 sed 명령 사용

delete 및 sed 명령 사용

내 /etc/aliases 파일을 편집해야 하지만 100개가 넘는 호스트에 동일한 파일이 있으므로 스크립트를 작성하여 실행하고 싶습니다. 여러 개의 별칭 항목이 있는데 그 중 하나에서 다음과 같이 사용자 및 쉼표 구분 기호를 제거하고 싶습니다.

alias_name1:    [email protected],[email protected],[email protected]
alias_name2:    [email protected],[email protected],[email protected]

따라서 "를 제거하고 싶다면,[이메일 보호됨]"alias_name2" 대신 "alias_name1"에 있는 "지금 가지고 있는 유일한 예는 전체 파일에서 해당 문자열을 제거하거나 파일의 특정 줄에서 해당 문자열을 제거하는 것뿐이므로 어떻게 해야 합니까?" 작동하지 않습니다.

답변1

삭제하지만 삭제하지는 않음 ",[email protected]""alias_name1""alias_name2"

sed방법:

sed -E '/^alias_name1/ s/,name2@example\.com(,?)/\1/' /etc/aliases

첫 번째 캡처 그룹 트릭은 (...)숫자가 줄 끝이나 중간에 있을 때도 작동합니다.,[email protected]


산출:

alias_name1:    [email protected],[email protected]
alias_name2:    [email protected],[email protected],[email protected]

답변2

sed대체 명령 앞에 검색 매개변수를 사용할 수 있습니다 .

sed '/search_string/ s/remove_string//'

위 명령은 /search_string/정규식과 일치하는 행에서만 작동하고 일치하는 내용을 빈 문자열로 바꿉니다 remove_string.

관련 정보