linux - 如何在 %% 或 $$ 中间 grep/split 一个词

标签 linux perl split grep

我有一个变量,我必须从中 grep %% 中间的 which 和以 $$ 开头的单词。我使用 split 它有效......但仅适用于某些情况。

例子:

#!/usr/bin/perl
my $lastline ="%Filters_LN_RESS_DIR%\ARC\Options\Pega\CHF_Vega\$$(1212_GV_DATE_LDN)";
my @lastline_temp = split(/%/,$lastline);
print @lastline_temp;
my @var=split("\\$\\$",$lastline_temp[2]);
print @var;

我得到了预期的 o/p。但是我可以使用 Grep 命令获得相同的结果吗?我的意思是我不想使用 array[2]array[1]。这样我就可以轻松地替换这些值。

最佳答案

我真的不知道如何才能获得预期的输出。因为您将数据放在“忙”引号中(插值、双引号……),所以它被存储为:

'%Filters_LN_RESS_DIR%ARCOptionsPegaCHF_Vega$01212_GV_DATE_LDN)'
  • 参见 Quote and Quote-like Operators也许阅读 Interpolation in Perl
  • 请注意反斜杠不见了。内插引号中的反斜杠仅表示“将下一个字符视为文字”,因此您得到文字 'A'、文字 'O'、文字 'P' , ....
  • '0'$((又名 $REAL_GROUP_ID)的值,您无意中要求它插入。所以有没有 '$$' split 序列。

您可以使用 grep 命令获得相同的结果吗?这取决于什么是“相同”。您将结果保存在数组 中,grep 的目的是从数组中排除一些东西。如果您使用非平凡的 grep,您将既没有数组,也没有数组的输出:grep {; 1 } @数据

实际上你可以用这个正则表达式得到完全相同的结果,假设 @vars 中的单个字符串是“结果”。

m/%([^%]*)$/

当然,仅此而已

substr( $lastline, rindex( $lastline, '%' ) + 1 );

它的运行速度可以提高 8-10 倍。

关于linux - 如何在 %% 或 $$ 中间 grep/split 一个词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11433225/

相关文章:

c - 尝试拆分字符串但得到困惑的子字符串

javascript - Node.js 中通过正则表达式分割数组

python - 使用 pandas 在 python 中分割文本并相应 append

linux - Linux中使用行号比较文件

python - Perl 或 Python : Convert date from dd/mm/yyyy to yyyy-mm-dd

linux - 如何将/etc/passwd 存储在散列或数组中?

perl - Perl中的map函数是如何实现的?

Perl - 使用对象哈希进行数据检索

python - Shell继承Python的Popen子进程,包括stdin/out/err

php 脚本在 Linux 启动时不执行