bashスクリプトでは、どのようなユーティリティがあり、2つの文字列の間のテキスト(刺し傷を含む)を削除するにはどうすればよいですか。
元のテキスト:
(ABC blah1)blah 2(def blah 5)blah 7)(DEF blah 8)blah 9
'(def'と次の')'の間のすべてのテキストを削除したいと思います。したがって、私の望ましい出力は次のようになります。
(ABC blah1)blah 2blah 7)blah 9
検索では大文字と小文字を区別しないことが望ましいでしょう...上記の例では、「(def ...)」と「(DEF ...)」を検出して削除します。
私が試してみました:
echo "(ABC blah1)blah 2(def blah 5)blah 7)(DEF blah 8)blah 9" | sed 's/(def.*)//gI'
しかし、出力は次のとおりです。
(ABC blah1)blah 2blah 9
これは、'。*'がsedで貪欲だからだと思います。
sed検索文字列をフォーマットする方法はありますか?sedはこれに最適なユーティリティですらありますか?私はこれをbashスクリプトから実行しているので、bashを介して利用できる基本的なutilは何でも実行できます。