Linux 터미널을 사용하여 문자열 패턴을 제거하는 방법은 무엇입니까?

Linux 터미널을 사용하여 문자열 패턴을 제거하는 방법은 무엇입니까?

다음과 같은 문자열 패턴을 제거하고 싶습니다.

You should not remove this /*This is the part should remove*/ You
should not remove this

/*및 안의 모든 텍스트를 제거하고 싶습니다 */.

답변1

사람에게 물고기를 가르치는 것과 사람에게 물고기를 주는 것에 관심이 있어서 정규식에 대한 튜토리얼을 링크해 드리겠습니다. 정규 표현식.info/quickstart.html

빠른 해결 방법이 필요한 경우 다음과 같이 하십시오. vim에서 파일을 열고 다음을 입력하십시오.

:s/\/\*.*?\*\/ /g

이는 /*로 시작하고 */로 끝나는 모든 문자열을 공백으로 대체해야 합니다. 내가 작성한 표현을 망칠 경우를 대비해 먼저 정규식 튜토리얼에 연결했습니다. 튜토리얼을 읽고 자신만의 명령을 작성하거나 위의 줄을 사용하기 전에 백업을 만드십시오.

답변2

다음과 같은 빠르고 더러운 sed 라인을 사용해 보십시오:

sed -e 's@/\*.*\*/@@' file

이렇게 하면 출력이 표시되지만 실제로 파일을 수정하지는 않습니다. 파일을 실행하고 원하는 변경 사항이 적용되었는지 확인한 다음 파일을 제자리에서 변경하도록 지시하기 -i전에 파일을 수정합니다.-e

실제로 수행하는 작업은 /*and 사이의 모든 항목을 가져오고 아무것도 대체하지 않고(본질적으로 삭제), and 부분도 */가져옵니다 ./**/

정규식을 망쳤을 경우를 대비해 수정하지 않는 방법을 먼저 알려드리겠습니다(메모리를 사용하지 않고 빠르게 테스트하기 위해 현재 컴퓨터에서 sed에 액세스할 수 없음). 또한 sed가 각 줄에서 개별적으로 작동하므로 텍스트가 교차 선을 제거하면 작동하지 않습니다. 한 번에 여러 줄의 텍스트를 작업하는 프로그램이 필요하다면 awk나 Perl이 필요할 것입니다(둘 중 어느 것도 코드 제안을 제공할 만큼 충분히 알지 못합니다).

관련 정보