Linux のターミナルを使用して文字列パターンを削除するにはどうすればいいですか?

Linux のターミナルを使用して文字列パターンを削除するにはどうすればいいですか?

このような文字列パターンを削除したい

You should not remove this /*This is the part should remove*/ You
should not remove this

/*および内のテキストをすべて削除したいと思います*/

答え1

「人に魚の釣り方を教える」と「人に魚を与える」という観点から、正規表現に関するチュートリアルへのリンクを貼っておきます。 正規表現.info/クイックスタート.html

迅速な解決策が必要な場合は、次の手順に従ってください。vim でファイルを開き、次のように入力します。

:s/\/\*.*?\*\/ /g

これは、/* で始まり */ で終わるすべての文字列をスペースに置き換えるものです。私が書いた式が台無しになった場合に備えて、最初に正規表現のチュートリアルへのリンクを貼りました。チュートリアルを読んで独自のコマンドを書くか、上記の行を使用する前にバックアップを作成してください。

答え2

次の簡単な sed 行を試してください。

sed -e 's@/\*.*\*/@@' file

これにより、出力が表示されますが、実際にファイルは変更されません。実行して必要な変更が行われたことを確認したら、-iの前にを付けて-e、ファイルをその場で変更するように指示します。

/*実際には、との間にあるすべてのものを取得して*/何もないものに置き換えます(基本的に削除します)。ただし、/*との部分も取得します。*/

正規表現を台無しにしてしまった場合に備えて、まずは変更しない方法を紹介します (メモリから作業しており、現在のマシンでは sed にアクセスできないため、すぐにテストできません)。また、削除するテキストが行をまたぐ場合は、sed は各行を個別に処理するため、この方法は機能しないことに注意してください。複数のテキスト行を一度に処理するプログラムが必要な場合は、awk または perl のいずれかが必要になります (どちらも、コードを提案できるほど詳しくありません)。

関連情報