grep で#
で始まるコメント行および空白行を削除する
$ grep -v '^\s*#' filename |grep -v '^\s*$'
もしくは
$ grep -v -e '^\s*#' -e '^\s*$' filename
簡単な解説
- grep の
-v
オプションは除外を意味します。 - 正規表現で
^
は行頭を表します。 - 正規表現の
\s
は空白文字を表し、^\s*
は行頭から0回以上繰り返しの空白を意味します。
そのため、\s*#
と書くと#
から始まるコメント行(#
より前には空白がいくつあっても良い)にマッチします。 - 正規表現の
$
は行末を表します。^\s*$
だと空白のみの行にマッチします。
実行例
$ vim /tmp/greptest.rb
/tmp/greptest.rb
#=========================
# ここのコメントは除去されます
#=========================
class Hoge
# このコメントも除去されます
def hello
puts "Hello, World!" # ここのコメントは除去されません
end
end
# このコメントは除去されます
hoge = Hoge.new
hoge.hello
#=> Hello, World! # これも除去されます
このようなファイルがあるとき、
$ grep -v -e '^\s*#' -e '^\s*$' /tmp/greptest.rb
を実行すると、
class Hoge
def hello
puts "Hello, World!" # ここのコメントは除去されません
end
end
hoge = Hoge.new
hoge.hello
という結果が返ってきます。