带有输出参数和新行的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中工作,目前正在开发中。太危险了。我们严格限制了使用--输出可以做什么。