IT序号网

单引号之间的 Perl 捕获

rubylouvre 2024年09月07日 编程语言 34 0

我正在尝试打印出用单引号括起来的文本。

/bin/bash -lc '/home/CASPER_REPORTS/scripts/CASPER_gen_report.sh CASPER_1' 
/bin/bash -lc '/home/CASPER_REPORTS/scripts/CASPER_gen_report.sh CASPER_1A' 
/bin/bash -lc '/home/CASPER_REPORTS/scripts/CASPER_gen_report.sh CASPER_2' 
/bin/bash -lc '/home/CASPER_REPORTS/scripts/CASPER_gen_report.sh CASPER_3' 
/bin/bash -lc '/home/CASPER_REPORTS/scripts/CASPER_gen_report.sh CASPER_3A' 

我猜 bool 值意味着 perl 看到了字符串。

$ cat /tmp/casper_reports | perl -nle 'print /'.*'/' 
1 
1 
1 
1 
1 

但是,当我尝试用括号捕获它时,它会抛出一个错误

$ cat /tmp/boobomb | perl -nle 'print /'(.*)'/' 
-bash: syntax error near unexpected token `(' 

请您参考如下方法:

在 Bash 和 Zsh shell 中,您可以使用 $'' 允许转义单引号。

echo $'I wouldn\'t' 

这也使 $1 不被 bash 解释并可用于 perl。

perl -nle $'print $1 if /\'(.*)\'/' < /tmp/boobomb 

另见 https://unix.stackexchange.com/questions/30903/how-to-escape-quotes-in-shell


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!