部分文字列の一致が見つかった場合は、スペースで区切られた文字列を検索して置き換えます。

部分文字列の一致が見つかった場合は、スペースで区切られた文字列を検索して置き換えます。

以下はサンプルファイルの内容です。

猫サンプル.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'

関連情報