하위 문자열 일치가 발견되면 공백으로 구분된 문자열을 검색하고 바꿉니다.

하위 문자열 일치가 발견되면 공백으로 구분된 문자열을 검색하고 바꿉니다.

다음은 샘플 파일 내용입니다.

고양이샘플.txt

-server -XX:+UseParallelGC -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+AggressiveHeap -XX:+PrintHeapAtGC -Djava.util.logging.FileHandler.limit=12908998 -XX:ParallelGCThreads=4 -Xms1536m -Xmx1536m -Xmn512m -Xss4m -XX:LargePageSizeInBytes=4m -XX:-BindGCTaskThreadsToCPUs -XX:PermSize=256m -XX:MaxPermSize=512m -XX:MaxTenuringThreshold=3 -XX:SurvivorRatio=20 -Dweblogic.SocketReaders=10

별도의 매핑 파일에서 문자열 목록을 얻었는데 그 중 하나는 문자열입니다 -Djava.util.logging.FileHandler.limit. 문자열이 발견되면 해당 값과 함께 제거해야 합니다.

따라서 전체 항목(및 해당 값)을 삭제하고 싶습니다.-Djava.util.logging.FileHandler.limit=12908998

-Djava.util.logging.FileHandler.limit다음과 같이 null로 대체하여 삭제할 수 있습니다 -Djava.util.logging.FileHandler.limit.

sed -e s/-Djava.util.logging.FileHandler.limit//g -i sample.txt

정규식을 \S*\s통해 전체 문자열을 공백으로 구분할 수 있을 때 다음을 시도했지만 실패했습니다.

sed -e s/-Djava.util.logging.FileHandler.limit\S*\s//g -i sample.txt

하지만 그 값을 제거하는 방법을 잘 모르겠습니다.-Djava.util.logging.FileHandler.limit=12908998

원하는 출력:

고양이샘플.txt

-server -XX:+UseParallelGC -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+AggressiveHeap -XX:+PrintHeapAtGC -XX:ParallelGCThreads=4 -Xms1536m -Xmx1536m -Xmn512m -Xss4m -XX:LargePageSizeInBytes=4m -XX:-BindGCTaskThreadsToCPUs -XX:PermSize=256m -XX:MaxPermSize=512m -XX:MaxTenuringThreshold=3 -XX:SurvivorRatio=20 -Dweblogic.SocketReaders=10

답변1

명령 sed이 제대로 실행되는데 따옴표가 누락되었습니다.

sed -e 's/-Djava.util.logging.FileHandler.limit=\S*\s//g'

관련 정보