ファイルを "cat"してコメント化された行を削除する方法は?

ファイルを "cat"してコメント化された行を削除する方法は?

catアーカイブphp.iniして削除する方法があるかどうか疑問に思います;

たとえば、ファイルに次の内容が含まれているとします。

;   - Show all errors, except for notices
;
;error_reporting = E_ALL & ~E_NOTICE
;
;   - Show only errors
;
;error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR
;
;   - Show all errors except for notices
;
error_reporting  =  E_ALL & ~E_NOTICE

正しいコマンドを実行すると、cat | {remove comments command}次のようになります。

error_reporting  =  E_ALL & ~E_NOTICE

ノート- これが最善の方法だと思いますが、cat他のユーティリティ(たとえば、、など)を使用したawk回答に実際に満足しています。sedegrep

答え1

grepを介してファイルをパイプする必要はありません。 grepはファイル名をコマンドライン引数として使用します。

grep -v '^#' file1 file2 file3

#文字で始まるすべての行が印刷されます。コメント文字を必要に応じて変更できます。

コメント文字が複数ある場合(行の先頭にあると仮定)

egrep -v '^(;|#|//)' filelist

答え2

あなたはそれを使用することができます:

sed -e '/^;/d' php.ini

答え3

egrep使用量を保存できますcat。つまり、少数のプロセスを作成し(egrep+ categrep、より少ないバッファを使用します(catパイプからパイプへの接続対パイプegrepなし)。

catファイル自体を読み取ることができるコマンドにのみファイルを渡す場合は、通常使用を制限することをお勧めします。

ただし、次のコマンドはスペースまたはタブでインデントされたコメントを削除します。

egrep -v '^[[:blank:]]*;'file.ini

答え4

grep -Ev ^'(#|$)' file.txt

file.txtからすべてのコメントと空白行を削除します。

Yokaiのコメントに基づいて回答が更新されました。 「egrepまたはfgrepを直接呼び出すことは廃止されましたが、それに依存する履歴アプリケーションを変更せずに実行できるようになります。」https://www.gnu.org/software/grep/manual/grep.html

関連情報