使用 Perl 脚本提取分配给字符串的数字

使用 Perl 脚本提取分配给字符串的数字

我有一个文件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 代码。

相关内容