以下はサンプルファイルの内容です。
猫サンプル.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
別のマッピングファイルから文字列のリストを取得しました。そのうちの1つは文字列です-Djava.util.logging.FileHandler.limit
。文字列が見つかったら、その値と一緒に削除する必要があります。
したがって、アイテム全体(およびその値)を削除したいと思います。-Djava.util.logging.FileHandler.limit=12908998
-Djava.util.logging.FileHandler.limit
次のようにnullに置き換えて削除できます-Djava.util.logging.FileHandler.limit
。
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'