在找到子字符串匹配时搜索并替换由空格分隔的字符串

在找到子字符串匹配时搜索并替换由空格分隔的字符串

以下是示例文件内容:

猫样本.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'

相关内容