2015-04-03 266 views
1

我已經嘗試了兩個不同的sed命令對稱爲「file1.txt」的文本文件。 我收到了相同的結果或輸出。我不明白的是「G」選項的含義或用法!我在網上搜索,但我找不到一個好的答案!'G'用sed命令做什麼?

這裏有兩個命令:

sed 'G' file1.txt 
sed '/^$/d;G' file.txt 

兩個命令都給出相同的輸出!他們在文本文件中的每一行之間創建一行間隔! 我知道'^ $'是指不包含任何內容的行,但'G'是做什麼的。例如,如果我把'd'代替'G',所有的空行都會被刪除!

+3

您應該閱讀'man sed' – nu11p01n73R 2015-04-03 16:03:55

+0

@ nu11p01n73R我已閱讀sed的手冊頁,但解釋非常有限或很短! – 2015-04-03 16:04:47

+0

@ nu11p01n73R您正在表達的看法是,沒有必要進行SO或對話,也沒有任何'雙方手冊頁。 smh一點 – iletras 2017-01-04 21:13:12

回答

0

按照sed man

g 

與保留空間的內容替換模式空間的內容。

G 

將新行添加到模式空間的內容,然後將保留空間的內容附加到模式空間的內容。

3

Get with g or G

而不是用交換模式空間保留空間,你可以用「G」命令將保留空間複製到模式空間。這會刪除模式空間。如果你想追加到模式空間,使用「G」命令。這會向模式空間添加一個新行,並在新行之後複製保留空間。

也就是說,不是交換當前內容的保留和模式空間(當前行等),你可以把模式空間並將其複製到保存空間中(或者替換或附加到保留空間該過程)。

這兩個sed命令屬於慣用的sed單線程,你可以找到online,它們只對某些文件(沒有空行的文件)做同樣的事情。

# double space a file 
sed G 

# double space a file which already has blank lines in it. Output file 
# should contain no more than one blank line between lines of text. 
sed '/^$/d;G'