このコマンドが何をするのかを知る必要があります。
sed '/^#/d' ~/.profile
このコマンドが私に与える出力はこれです:
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
私はこのコマンドを知っています:
sed '/^$/d' file.txt
file.txt
の空白行を削除することを意味します。
#
は、コマンドまたはコメントの終わりを意味する場合があることを知っています。
$
はコマンドの開始を示します。
正確には何コマンド
sed '/^#/d' ~/.profile
しますか?
sed
コマンドライン
sed '/^#/d' ~/.profile
行の先頭から始まるすべてのシェルコメントをファイル~/.profile
から削除します。次の2行の最初の行ですが、2番目の行ではありません。
# comment
# indented comment
これは、行の先頭(#
)で^
を一致させようとすることでこれを行い、一致する行をすべて削除(d
)します。
シェルスクリプトからインデントされたコメントも削除するには、
sed '/^[[:blank:]]*#/d' file
[[:blank:]]
は、スペース文字と水平タブに一致します。
$
は、コマンドラインで何かを入力するように求めるためにシェルが使用する一般的なプロンプトであるという意味で、「コマンドの開始」のみを意味します。
#
は、シェルでコメントを紹介する文字です。 sed
スクリプトでは、入力の#
を照合する以外の目的はありません。1。 「コマンドの終わり」を表すために使用されるのを見たことがありません。
1 コマンド間で使用される場合、#
文字はsed
スクリプトにもコメントを導入します。
/^#/
は、(^
)が#
で始まる行に一致します。 d
はそれらを削除します。 sed
のデフォルトのアクションは、行を印刷することです(-n
が指定されていない場合)。したがって、他のすべてが印刷されます。
#
は、コマンドまたはコメントの終わりを意味する場合があることを知っています。
$
はコマンドの開始を示します。
うーん、いや。正規表現では、^
は文字列(または行)の始まりを示し、$
は終わりを示します。 #
はコメント文字として使用されるため、通常は行の先頭にあります。
コメント文字として#
を使用する多くのファイルでは、コマンドの後に使用したり、行の先頭に直接使用したりできないことに注意してください。例の出力に残っているコメントのように、字下げすることができます。
/^ *#/d
(または/^[ \t]*#/d
)のようなものは、インデントされたコメントも削除するという点で優れているかもしれません。