使用sed linux命令进行预打印时返回参考



我正试图在"猴子;使用此命令:

echo monkey | sed -E '/(.)onkey/i 1'

但当我这样使用它时,输出显示

1
monkey

我其实希望看到:

m
monkey

但是反向引用不起作用。请有人告诉我是否可以将Back引用与\1一起使用。提前谢谢。

您可以使用此sed:

echo 'monkey' | sed -E 's/(.)onkey/1n&/'
m
monkey

此处:

  • 1:是组#1的反向参考
  • n:插入换行符
  • &:是完全匹配的反向参考

使用任何版本的awk,您都可以尝试以下解决方案,这些解决方案是用所示的示例编写和测试的。只需搜索正则表达式^.onkey,然后使用sub函数将起始字母替换为新行和本身,并打印值。

echo monkey | awk '/^.onkey/{sub(/^./,"&n&")} 1'

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

sed -E '/monkey/i m' file

仅在包含monkey的行上方插入包含m的行。

也许一个更通用的解决方案是在单词上方插入单词的第一个字符:

sed -E 'h;s/B.*//;G' file

复制这个单词。

删除单词的第一个字符以外的所有字符。

附加由换行符分隔的原始单词。

打印结果。

N.B.B开始一个单词的字符之间的匹配。CCD_ 11表示单词的开始或结束(<>分别表示(。

相关内容

  • 没有找到相关文章

最新更新