Files

在找到子字元串匹配時搜尋並替換以空格分隔的字元串

  • March 28, 2022

以下是範例文件內容:

貓樣本.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通過替換-Djava.util.logging.FileHandler.limit為 null 來刪除,如下所示:

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

您的sed命令執行良好,您只是缺少引號。

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

引用自:https://unix.stackexchange.com/questions/697039