我在想如果有人能幫我理解下面的命令。此命令的目的是爲了清除舊的內核,但是我想明白的語法:Sed語法 - 分解
dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo apt-get -y purge
這是我到目前爲止有:
的dpkg -l「的linux *」 - 列表包包含「的linux *」模式
sed的 '/^II/d;!/' ... - 找到開頭的行II,但不包含d;
「$(UNAME -r | sed的 」S /(.*)-([^ 0-9] +)/ \ 1 /「)」'/ d - 命令替換列出當前內核並且,sed的「從版本僅提取數s/...(*) - 搜索任意數目的字符,的...([^ 0-9] ... - 從數字0 -9,我不明白這一點:...... +)/ \ 1/...
我完全失去了這一個:
S/^ [^] * [^] *([^ ] )。/\ 1 /;/[0-9] /!d' - 它正在尋找空字符開始字符串?
問候
關閉;儘管如此,你還是沒有把它分解。幾乎整個命令,直到xargs,只是第一個sed的一個長期論點。你有看到?當你把字符串放在一起時,就像上面的'arg'「$(command)」一樣,它們被shell視爲一個長的不間斷字符串。其次,閱讀sed的手冊頁。它實際上非常靈活,並且有一大堆神祕的命令。/^ II/d!;是一個命令,由; d指定sed的指令,並且之前的位描述它適用的行。繼續分析! – 2012-08-11 08:17:25