【问题标题】:What does 'G' do with sed command?'G' 对 sed 命令有什么作用?
【发布时间】:2015-04-03 16:00:21
【问题描述】:

我已经针对名为“file1.txt”的文本文件尝试了两个不同的 sed 命令。 我收到了相同的结果或输出。我不明白的是“G”选项的含义或用法!我在网上搜索过,但没有找到好的答案!

这里有两个命令:

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

两个命令的输出相同!它们在文本文件的每一行之间创建了一个行间距! 我知道'^$' 指的是不包含任何内容的行,但'G' 是做什么的。例如,如果我输入 'd' 而不是 'G' 所有空行都将被删除!

【问题讨论】:

    标签: bash sed


    【解决方案1】:

    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'
    

    【讨论】:

      【解决方案2】:

      根据sed man

      g
      

      将模式空间的内容替换为保持空间的内容。

      G
      

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

      【讨论】:

        猜你喜欢
        • 2015-03-29
        • 1970-01-01
        • 1970-01-01
        • 2021-09-24
        • 2017-04-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多