复制具有特定模式的行并将其粘贴到unix中,而不打开文件

时间:2016-01-25 00:04:31

标签: unix awk sed

我有一个特定的要求。

我有档案:

some text

 . . . . .

 . . . . .

**todo: owner comments . . . .** 

... .

sometext

现在我想输出如下:

some text

 . . . . .

 . . . . .

**todo: owner comments . . . .** 

**owner: todo comments . . . .** 

... .
   .

sometext

我想grey todo 并复制该行并将其粘贴到上面,并进行上述修改。 没有打开文件就可以了......比如sed,awk命令??

谢谢和问候, Dharak

2 个答案:

答案 0 :(得分:1)

我猜你的意思是在编辑器中打开文件。这是一个awk脚本,您可以根据自己的需要定制。

$ awk '/\*\*todo:/{print; print "**owner: todo ... ";next}1' file 
some text

 . . . . .

 . . . . .

**todo: owner comments . . . .** 
**owner: todo ... 

... .

sometext

您可以将输出保存到临时文件并移至原始文件。

答案 1 :(得分:0)

sed 's/\(**todo: owner comments\)\(.*\)/\1 \2  \
>   **owner: todo comments \2/g' filename
  1. 匹配并替换的模式
  2. 通过在' \'之后放置一个输入来手动插入新行。在第一行结束时
  3. '>'将自动指向要插入的下一个字符