~/.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 한 줄짜리 대신 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 스크립트가 있는 것은 좋지만 구성 파일을 실제로 변경하고 저장하는 것이 아니라 보기 위한 용도로 사용해야 합니다.