Text-Processing

刪除空配置部分

  • April 2, 2011

~/.config/vlc/vlcrc如果您只想對配置選項進行版本控制,那麼像這樣的文件99% 都是垃圾。我有一個刪除評論的腳本,但是還有很多空的配置部分。我的sed- 和awk-fu 跟不上速度,那麼如何刪除空的配置部分?

配置部分的第一行匹配,如果第一行後跟任意數量的僅由空格組成的行,則^\[.*\]$它是^\[.*\]$的,然後是另一行匹配or EOF

當你看到它們時召回部分標題,但在你看到該部分中的設置行之前不要列印它們。您可以通過將節標題儲存在保留空間中來在 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

作為 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 將其標記為可執行。

引用自:https://unix.stackexchange.com/questions/10145