带有输出参数和新行的Perl ack工具

带有输出参数和新行的Perl ack工具,ack,Ack,我经常使用ack,但我没有发现的是如何让它在使用输出参数时添加新行 范例 echo 'name=Joe,id=123' | ack '^name=(\w+),id=(\d+)' --output="User name: $1\nUser ID: $2" 我想 User name: Joe User ID: 123 但我明白了 User name: Joe\nUser ID: 123 是否仍要使ack尊重输出中的新行字符 谢谢您可以通过@{[…]}插值将任意代码放入该字符串中。出于某种原因,

我经常使用
ack
,但我没有发现的是如何让它在使用输出参数时添加新行

范例

echo 'name=Joe,id=123' | ack '^name=(\w+),id=(\d+)' --output="User name: $1\nUser ID: $2"
我想

User name: Joe
User ID: 123
但我明白了

User name: Joe\nUser ID: 123
是否仍要使
ack
尊重输出中的新行字符


谢谢

您可以通过
@{[…]}
插值将任意代码放入该字符串中。出于某种原因,文本
“\n”
字符串不起作用,但
chr 0x0A
$/
起作用

例如:

$ echo a b | ack '(\w+)\s+(\w+)' --output '$1@{[ chr 0x0A ]}$2'
输出:

a
b

请注意,这种功能在将来可能会中断,另请参见类似的讨论,如

您可以通过
@{[…]}
插值将任意代码放入该字符串中。出于某种原因,文本
“\n”
字符串不起作用,但
chr 0x0A
$/
起作用

例如:

$ echo a b | ack '(\w+)\s+(\w+)' --output '$1@{[ chr 0x0A ]}$2'
输出:

a
b

请注意,这种功能将来可能会中断,另请参见类似的讨论,如您将
\n
传递给
ack
,而不是换行符。替换

--output='User name: $1\nUser ID: $2'


您正在将
\n
传递到
ack
而不是换行符。替换

--output='User name: $1\nUser ID: $2'


ack
无关。传递换行符而不是
\n
。你在问什么shell?与
ack
无关。传递换行符而不是
\n
。你在问什么?这里是ack的作者<代码>@{[…]}绝对不会在ack 3中工作,目前正在开发中。太危险了。我们已经严格限制了使用
--output
可以做什么<代码>@{[…]}绝对不会在ack 3中工作,目前正在开发中。太危险了。我们严格限制了使用
--输出
可以做什么。