![전체 줄을 삭제하지 않고 파일의 한 줄에서 단어를 제거합니다.](https://linux55.com/image/160667/%EC%A0%84%EC%B2%B4%20%EC%A4%84%EC%9D%84%20%EC%82%AD%EC%A0%9C%ED%95%98%EC%A7%80%20%EC%95%8A%EA%B3%A0%20%ED%8C%8C%EC%9D%BC%EC%9D%98%20%ED%95%9C%20%EC%A4%84%EC%97%90%EC%84%9C%20%EB%8B%A8%EC%96%B4%EB%A5%BC%20%EC%A0%9C%EA%B1%B0%ED%95%A9%EB%8B%88%EB%8B%A4..png)
줄이 다음으로 시작하는 경우에만 "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",/ /'