1
我有一個問題有關的sed:
在file.txt的假設的東西是這樣的:
one
two
three
然後我運行:
sed '/^$/d;G' file.txt
我認爲這個過程應該是這樣的:
for line in file {
pattern_space = line
if (pattern_space == "\n") then pattern_space = ""
pattern_space = pattern_space + "\n" + hold_space
print pattern_space
}
話,我想結果應該是這樣的:(空白行不動,非空白線後跟行)
one
two
three
但是,現實的情況是:
one
two
three
我彷彿運行的sed '/^$/d' file.txt的| sed G,我對此感到困惑。
你能告訴我什麼是正確的過程嗎?有什麼我誤解?
/BR
阮
嗨,@jthill,我想問一點點,請。從手冊中說,「n N讀/將下一行輸入添加到模式空間中」,當我使用** n **時,爲什麼模式空間中的原始內容被打印出來?例如「sed'n; d'file.txt」,這個命令只是切斷了偶數行。我認爲應該沒有什麼輸出,因爲**閱讀下一行到**。 pattern_space中的原始東西應該消失,但它不是 – ruanhao
我不知道你在哪裏得到該手冊,[真正的](http://www.gnu.org/software/sed/manual/sed。 html)說---'n' 如果自動打印未禁用,則打印模式空間,然後,無論如何,用下一行輸入替換模式空間。如果沒有更多輸入,則sed退出而不處理任何更多的命令 – jthill
謝謝@jthill,你是對的 – ruanhao