我有一个具有以下格式的文件:
KEY1="VALUE1"
KEY2="VALUE2"
KEY1="VALUE2"
Run Code Online (Sandbox Code Playgroud)
我需要一个 perl 命令来仅获取第一次出现的KEY1, ie VALUE1。
我正在使用这个命令:
perl -ne 'print "$1" if /KEY1="(.*?)"/' myfile
但结果是:
VALUE1VALUE2
EDIT
解决办法必须用perl命令,因为系统没有其他正则表达式工具。
像这样添加and last到你的单行代码中(删除多余的引号):
perl -ne 'print $1 and last if /KEY1="(.*?)"/' myfile
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为-nswitch有效地将代码包装在while循环中。因此,如果模式匹配,print则执行,它成功并因此导致last执行。这将退出while循环。
您还可以使用更详细的,它指定在输入行上迭代的循环last LINE的(隐式)标签。while最后一种形式对于比此处更复杂的代码很有用,例如涉及嵌套循环的代码。