Perl 使用awk将分号替换为换行符时出错

Perl 使用awk将分号替换为换行符时出错,perl,awk,gsub,Perl,Awk,Gsub,我不知道是什么导致了这个错误 我有一个文件rmax.text,其中包含: 123;456;3434;645234;234;23423; 我试图替换分号与换行符“\n”如下 123 456 3434 645234 234 23423 我试过: system('awk'{gsub(“;”,“\n”);print}'rmax.txt'); 这一次给了我语法错误- rmax第7行“'awk'{”附近出现语法错误 rmax第7行“print}”附近的语法错误 由于编译错误,rmax的执行已中止。

我不知道是什么导致了这个错误

我有一个文件
rmax.text
,其中包含:

123;456;3434;645234;234;23423;
我试图替换分号
与换行符
“\n”
如下

123
456
3434
645234
234
23423
我试过:

system('awk'{gsub(“;”,“\n”);print}'rmax.txt');
这一次给了我语法错误-

rmax第7行“'awk'{”附近出现语法错误 rmax第7行“print}”附近的语法错误 由于编译错误,rmax的执行已中止。
如果我直接尝试:

awk'{gsub(“;”,“\n”);print}'rmax.txt
我的错误是:

在rmax第7行“awk'{gsub(“;”,“\n”);print}”附近找到运算符所需的字符串
(您是否需要提前退出awk?)
在rmax第7行“{gsub(“;”,“\n”);print}rmax”附近找到了预期运算符的位置
(rmax之前缺少操作员?)
rbermax第7行“awk'{gsub(“;”,“\n”);print}”附近的语法错误
由于编译错误,rbermax的执行已中止。

看来我的语法是正确的,但它仍然不起作用。

既然您在这个问题上有一个Perl标记,我将提供一个Perl解决方案

perl -pe 'tr/;/\n/' rmax.text
我会提供一个解释,但我看不到任何可能不清楚的地方


请不要使用
系统
或反勾号运行此操作。如果您想将其作为更大的Perl程序的一部分,那么必须显示该程序

您是否在Perl中使用awk?如果是的话,为什么?不能仅仅
perl-pe的//\n/g'填充
?真的需要awk和系统吗call@TomFenech对不起,我只是perl方面的新手。我看到有人在做这件事,这就是为什么我也要这么做:)还不熟悉复杂的情况。你在单引号中有单引号。您需要转义内部引号,如:
system('awk\'{gsub(;“,“\n”);print}\'rmax.txt')我将把它用于可能更大的perl程序。但目前我刚刚开始,已经出现了这个错误:(.这是我目前的程序:#!/usr/bin/perl系统('less max.txt | grep“%WF”>rmax.txt'));perl-pe'tr/;/\n/'rmax.text运行此操作后..这是我得到的错误:…在提出您的建议后,我得到了此错误:字符串在rmax第7行的“pe'tr/;/\n/”(是否需要预声明pe?)附近找到Bareword,在rmax第7行的“tr/;/\n/”附近找到运算符(rmax之前缺少运算符?)rbermax第7行“pe'tr/;/\n/”附近出现语法错误。由于编译错误,rbermax的执行被中止。我写道“请不要使用
系统
或反勾号运行此操作”。显示完整的程序。