'G'对sed命令有什么作用?

时间:2015-04-03 16:00:22

标签: bash sed

我针对名为" file1.txt"的文本文件尝试了两种不同的sed命令。 我收到了相同的结果或输出。我不明白的是" G"选项!我在网上搜索过,但我找不到一个好的答案!

这是两个命令:

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

两个命令都提供相同的输出!它们在文本文件中的每一行之间创建一个行间隙! 我知道' ^ $'是指什么都没有,但是' G'做。例如,如果我把' d'而不是' G'所有空白行都将被删除!

2 个答案:

答案 0 :(得分: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'

答案 1 :(得分:1)

根据sed man

g

使用保留空间的内容替换模式空间的内容。

G

在模式空间的内容中附加换行符,然后将保留空间的内容追加到模式空间的内容中。