
~/.config/vlc/vlcrc
バージョン管理構成オプションのみが必要な場合、そのファイルは99%のゴミです。私スクリプトコメントを削除しましたが、空の構成セクションがたくさん残っています。私のsed
-およびawk
-fu速度が最新でない場合は、空の設定セクションをどのように削除しますか?
構成セクションの最初の行は^\[.*\]$
と一致し、次のようになります。空最初の行の後にスペースでのみ構成された行が複数ある場合は、その後にまたは一致する^\[.*\]$
他の行が続きますEOF
。
答え1
セクションのタイトルを見るときに考えてみてください。ただし、セクションに設定行が表示されるまで印刷しないでください。セクションヘッダーを予約済みスペースに保存することで、sedでこれを行うことができますが、awkではよりきれいです。
awk '
/^ *\[/ {section=$0} # recall latest section header
/^ *[^[#]/ { # setting line
if (section != "") {print section; section="";} # print section header if not yet done
print
}
' ~/.vlc/vlcrc >~/config/vlc/vlcrc
答え2
awk 1行ではなく、awkスクリプトをファイルに保存できます。以下は少し複雑なスクリプトバージョンです。
#!/usr/bin/awk -f
# No section seen yet.
BEGIN { section="" }
# Match and save current section header.
/^\[.*\]$/ {
section=$0;
next;
}
# Ignore blank and comment-only lines.
/^[[:space:]]*(#.*)?$/ {
next;
}
# By default do this.
{
# Print section header if not already printed.
#if(length(section)) {
if(section != "") {
print section;
section="";
}
# And print current line.
print;
}
conf-filter.awkと同じファイルに保存し、chmod +x conf-filter.awkを使用して実行可能としてマークします。
答え3
デフォルトの構成ファイルが混乱しているように見えますが、一部の構成値を変更する必要がある場合は、すべてのヘッダーと説明を適切な場所に置くことが役立ちます。長期的な管理の観点からは、通常、これらのファイルを元の形式に保つことをお勧めします。これにより、アップグレード時に変更を追跡することもできます。プログラムの新しいバージョンごとにデフォルト設定が変更され、変更をできるだけ少なく変更すると、次のツールを使用して発生した状況を簡単に比較またはdiff
確認できます。vim -d
本当に素晴らしい変化でした。
設定中の値をすばやく移動するために作成したのと同じawkスクリプトがあることをお勧めしますが、設定ファイルを実際に変更して保存するのではなく、表示の目的で使用する必要があります。