我正在尝试使用以下命令添加“monkey”的第一个字符:
echo monkey | sed -E '/(.)onkey/i \1'
但是当我这样使用它时,输出显示
1 monkey
其实我希望看到:
m monkey
但反向引用不起作用。请有人告诉我,如果它是可以使用反向引用与\1。先谢谢你了。
6rqinv9w1#
您可以使用sed:
sed
echo 'monkey' | sed -E 's/(.)onkey/\1\n&/' m monkey
这里:
\1
\n
&
4c8rllxm2#
对于任何版本的awk,您都可以尝试以下解决方案,并使用所示示例编写和测试。简单地搜索正则表达式^.onkey,然后使用sub函数将开始字母替换为本身,新行和本身,并打印值。
awk
^.onkey
sub
echo monkey | awk '/^.onkey/{sub(/^./,"&\n&")} 1'
6ju8rftf3#
这可能对你有用(GNU sed):
sed -E '/monkey/i m' file
仅在包含monkey的行上方插入包含m的行。也许一个更通用的解决方案是在一个单词的上方插入该单词的第一个字符:
monkey
m
sed -E 'h;s/\B.*//;G' file
抄写这个单词。删除除单词第一个字符以外的所有字符。在原单词后面加上一个换行符。打印结果。注意:\B启动单词字符之间的匹配。\b表示一个字的开始或结束(\<和\>分别表示)。
\B
\b
\<
\>
3条答案
按热度按时间6rqinv9w1#
您可以使用
sed
:这里:
\1
:组#1的反向引用\n
:插入换行符&
:完全匹配的反向引用4c8rllxm2#
对于任何版本的
awk
,您都可以尝试以下解决方案,并使用所示示例编写和测试。简单地搜索正则表达式^.onkey
,然后使用sub
函数将开始字母替换为本身,新行和本身,并打印值。6ju8rftf3#
这可能对你有用(GNU sed):
仅在包含
monkey
的行上方插入包含m
的行。也许一个更通用的解决方案是在一个单词的上方插入该单词的第一个字符:
抄写这个单词。
删除除单词第一个字符以外的所有字符。
在原单词后面加上一个换行符。
打印结果。
注意:
\B
启动单词字符之间的匹配。\b
表示一个字的开始或结束(\<
和\>
分别表示)。