Perl 无法读入变量来替换单词 [ksh]
Perl unable to read in variable to replace words [ksh]
我有一个名为 123.txt 的文本文件
在 123.txt 它包含
没关系 % : 很好
不好 % : 太糟糕了
我的工作是将 "is okay %" 中的单词替换为 可以 %
我当前的代码(不工作)
$temp_var="is okay \%"
perl -pi -e 's/$temp_var/okay can \%/g' *123.txt
在 % 上加上反斜杠以处理特殊字符的原因。
我曾尝试使用 sed -i 进行我之前的编码,但它没有成功,因为 -i 不是经典界面的一部分,我已尝试放置 's/is okay \%/okay can \%/g' 而不是 $temp_var 并且它能够工作。
我不太确定这是我转换变量的方式还是 $temp_var 无法在 PERL 中读取
谢谢!
你的替换对我有用,我唯一不同的是我还在 oneliner 本身中声明了变量 $temp_var。
$ cat so45451136.txt
is okay % : That's good
not okay % : That's bad
$ perl -pe '$temp_var="is okay \%";s/$temp_var/okay can \%/g;' so45451136.txt
okay can % : That's good
not okay % : That's bad
在s/$temp_var/okay can \%/g
中,$temp_var
指的是一个Perl变量。只有 ksh
进程知道它的变量。您需要将其值提供给 Perl。
硬编码:
perl -i -pe's/is okay %/okay can %/g' *123.txt
通过参数:
text='is okay %'
perl -i -pe'
BEGIN { $text = shift(@ARGV); }
s/\Q$text/okay can %/g;
' "$text" *123.txt
通过环境变量:
text='is okay %'
TEXT="$text" perl -i -pe's/$ENV{TEXT}/okay can %/g' *123.txt
通过环境变量:
export TEXT='is okay %'
perl -i -pe's/$ENV{TEXT}/okay can %/g' *123.txt
注意:"\Q$text\E"
创建一个匹配 $text
值的正则表达式。 (可以省略尾随 \E
。)
我有一个名为 123.txt 的文本文件 在 123.txt 它包含
没关系 % : 很好
不好 % : 太糟糕了
我的工作是将 "is okay %" 中的单词替换为 可以 %
我当前的代码(不工作)
$temp_var="is okay \%"
perl -pi -e 's/$temp_var/okay can \%/g' *123.txt
在 % 上加上反斜杠以处理特殊字符的原因。
我曾尝试使用 sed -i 进行我之前的编码,但它没有成功,因为 -i 不是经典界面的一部分,我已尝试放置 's/is okay \%/okay can \%/g' 而不是 $temp_var 并且它能够工作。
我不太确定这是我转换变量的方式还是 $temp_var 无法在 PERL 中读取
谢谢!
你的替换对我有用,我唯一不同的是我还在 oneliner 本身中声明了变量 $temp_var。
$ cat so45451136.txt
is okay % : That's good
not okay % : That's bad
$ perl -pe '$temp_var="is okay \%";s/$temp_var/okay can \%/g;' so45451136.txt
okay can % : That's good
not okay % : That's bad
在s/$temp_var/okay can \%/g
中,$temp_var
指的是一个Perl变量。只有 ksh
进程知道它的变量。您需要将其值提供给 Perl。
硬编码:
perl -i -pe's/is okay %/okay can %/g' *123.txt
通过参数:
text='is okay %'
perl -i -pe'
BEGIN { $text = shift(@ARGV); }
s/\Q$text/okay can %/g;
' "$text" *123.txt
通过环境变量:
text='is okay %'
TEXT="$text" perl -i -pe's/$ENV{TEXT}/okay can %/g' *123.txt
通过环境变量:
export TEXT='is okay %'
perl -i -pe's/$ENV{TEXT}/okay can %/g' *123.txt
注意:"\Q$text\E"
创建一个匹配 $text
值的正则表达式。 (可以省略尾随 \E
。)