我有一个文件input.txt
,其中有一些字符串,每个字符串都分配有一些值。
我的任务是编写一个 Perl 脚本来提取分配给任意字符串的数字。
例如,鉴于此input.txt
Tom=0×1234,Bob=0x4567,rock=0x8912.
我必须提取分配给的值rock
。
我需要一些帮助来编写脚本来完成此操作。
答案1
@terdon 的一个变体 -- 对于每个 /rock=(...)/,说:
perl -nE 'say for /rock=(\w+)/'
以及使用 grep 的解决方案
grep -Po 'rock=\K\w+' file
答案2
以下是一种方法:
$ perl -lne '/rock=([^.,]+)/ && print $1' file
0x8912
将/rock=([^.]+)/
匹配字符串,然后捕获一个或多个非字符 ( )rock=
的最长部分。括号“捕获”匹配项,并将其用作。如果匹配,则打印。.
[^.]+
$1
$1
删除-l
每个输入行的尾随换行符,并为每个调用添加换行符print
。-n
指示perl
逐行读取输入文件,并将给出的脚本应用于-e
每一行。
答案3
像这样
echo Tom=0×1234,Bob=0x4567,rock=0x8912 | perl -E'while(<<>>){print map$_->[1],grep$_->[0]=~/rock/,[split/=/]for split/,/,$_}';
它编译warnings
并使用新的,<<>>
所以它确实是好的 perl 代码。