【问题标题】:How to copy an entire line which matches the string and paste right after it?如何复制与字符串匹配的整行并在其后粘贴?
【发布时间】:2017-07-22 20:45:22
【问题描述】:

我正在尝试使用 grep 命令在文件中搜索特定行,并且我成功地做到了。现在我想将整行复制到原始行之后的新行。换句话说,原行后面应该有相同内容的新行。

例如: 原始数据:

Apple 

Samsung

Nokia

HTC

说我是否希望新数据看起来像

Apple

Samsung

Samsung

Nokia

HTC

我用 sed 尝试了 grep 和管道,但失败了。谁能帮我解决这个问题?

谢谢

【问题讨论】:

  • 在问题中包含您的代码。
  • grep input.txt 如果它与字符串匹配,它将读取整行。现在我想将缓冲区复制到原始行之后的新行

标签: shell unix sed grep


【解决方案1】:

对于带有内容的文件input.txt

Apple
Samsung
Nokia
HTC

您可以像这样对“Samsung”行进行内联替换:

sed -i 's/\(Samsung\)/\1\n\1/' input.txt

括号捕获单词,然后\1 将其放回两次,中间换行。

【讨论】:

    【解决方案2】:

    使用这个sed

    sed $'s/Samsung/&\\\n&/' input.txt
    

    输出:

    Apple
    Samsung
    Samsung
    Nokia
    HTC
    

    另见:

    【讨论】:

    • 您好 codeforester,感谢您的帮助。我举了一个非常简单的例子作为数据,但在我的情况下,我有一个很长的行,并且每行都输入整行并不方便,因为我必须在我的文件中多次执行此操作。我正在考虑使用 grep,匹配模式,然后复制整行。有什么想法吗?
    • 或者这个sed:sed '/Samsung/ {h;G}' file
    【解决方案3】:

    使用sed,您可以默认使用-n 关闭打印行,并使用p 显示行。使用此信息将显示解决方案

    sed '/Samsung/p' yourfile
    # Or, when you want to match the whole line
    sed '/^Samsung$/p' yourfile
    

    【讨论】:

    • -n 和这个问题有什么关系?
    • @glennjackman 这是我第一次使用不带-n 的选项p。对于不知道p 选项的人来说,这是一个小提示,p 可以在其他情况下使用。
    【解决方案4】:

    这可能对你有用(GNU sed):

    sed '/pattern/H;//G' file
    

    如果模式可以多次出现:

    sed 'x;z;x;/pattern/H;//G' file
    

    【讨论】:

      【解决方案5】:

      为了完整性:

      awk '/Samsung/ {print}; {print}' file
      perl -pe 'print if /Samsung/' file
      

      【讨论】:

        【解决方案6】:

        复制整个行匹配模式,并将其粘贴到新行上,紧随其后:

        sed -i $'s/.*Samsung.*/&\\\n&/' file
        

        输出:

        Apple
        Samsung
        Samsung
        Nokia
        HTC
        

        将结果输出到另一个文件。

        sed $'s/.*Samsung.*/&\\\n&/' file > anotherfile
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-08-20
          • 2014-10-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-06-26
          相关资源
          最近更新 更多