我针对名为" file1.txt"的文本文件尝试了两种不同的sed命令。 我收到了相同的结果或输出。我不明白的是" G"选项!我在网上搜索过,但我找不到一个好的答案!
这是两个命令:
sed 'G' file1.txt
sed '/^$/d;G' file.txt
两个命令都提供相同的输出!它们在文本文件中的每一行之间创建一个行间隙! 我知道' ^ $'是指什么都没有,但是' G'做。例如,如果我把' d'而不是' G'所有空白行都将被删除!
答案 0 :(得分:3)
您可以使用" 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
在模式空间的内容中附加换行符,然后将保留空间的内容追加到模式空间的内容中。