Files
在找到子字元串匹配時搜尋並替換以空格分隔的字元串
以下是範例文件內容:
貓樣本.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'