以下是示例文件内容:
猫样本.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
命令运行良好,您只是缺少引号。