以下是示例文件内容:
猫样本.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
答案1
您的sed
命令运行良好,只是缺少引号。
sed -e 's/-Djava.util.logging.FileHandler.limit=\S*\s//g'