我正试图在"猴子;使用此命令:
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表示单词的开始或结束(<
和>
分别表示(。