전체 줄을 삭제하지 않고 파일의 한 줄에서 단어를 제거합니다.

전체 줄을 삭제하지 않고 파일의 한 줄에서 단어를 제거합니다.

줄이 다음으로 시작하는 경우에만 "www.yahoo.com" 문자열을 제거하고 싶습니다.[에서 호스트 이름의 위치를 ​​지정합니다.그리고]또한 문자열 뒤에 쉼표(,)가 오면 해당 쉼표도 제거해야 합니다.

assign where host.name in [ "www.google.com","www.yahoo.com","www.facebook.com" ]

내 출력은 다음과 같아야합니다

assign where host.name in [ "www.google.com", "www.facebook.com" ]

나는 이것을 달성하는 방법을 모른다. 이 코드에 대한 몇 가지 아이디어를 알려주십시오.

답변1

이와 같은 문제는 일반적으로 sed, awk 또는 Perl을 사용하여 처리됩니다. 표준 sed 솔루션은 다음과 같습니다.

sed '/^assign where host.name in \[.*\]$/s/"www.yahoo.com",//'

당신의 말투가 이상합니다. 사람들은 보통 말하지 않지

나는 애완 동물 ca를 가지고 있고 그 뒤에 t가 있습니다.

그들은 말했다

나는 애완용 고양이를 키우고 있습니다.

마찬가지로 대신

문자열 "www.yahoo.com"...문자열 뒤에 쉼표( ,) 가 오는 경우

너는 말해야 해

문자열"www.yahoo.com",

어쩌면 더 복잡한 것을 의미하지 않는 한

문자열 "www.yahoo.com"... 문자열 뒤에 쉼표( ,)가 오면 선택적으로 공백으로 구분됩니다.

이 상황에서는 이렇게 말해야 합니다.

위의 명령은 귀하의 질문에 맞는 작업을 수행합니다. 즉, 문자열을 삭제합니다 "www.yahoo.com",. 네가 하고 싶은 일을 하고 싶다면보여주다,댓글에 말씀하신 내용 외에 공백을 추가하세요.

sed '/^assign where host.name in \[.*\]$/s/"www.yahoo.com",/ /'

관련 정보