【发布时间】:2018-06-26 21:30:41
【问题描述】:
我正在尝试将文件文本转换为特定格式,因此我使用了很多“sed”
当我在 unix 上尝试所有命令行时,它可以工作,但是当我将命令放入我的脚本 perl 时,如下所示:
system "sed 's/( )//g' prix$arg1.txt>prixmodifAyc.txt";
system "sed 's/ /|/g' prixmodifAyc.txt>prixmodifAyc3.txt";
system "sed 's/||/|/g' prixmodifAyc3.txt>prixmodifAyc4.txt";
system "sed 's/||/|/g' prixmodifAyc4.txt>prixmodifAyc5.txt";
system "sed 's/||/|/g' prixmodifAyc5.txt>prixmodifAyc6.txt";
system "sed 's/||/|/g' prixmodifAyc6.txt>prixmodifAyc7.txt";
system "sed 's/||/|/g' prixmodifAyc7.txt>prixmodifAyc8.txt";
system "sed 's/|€|/|/g' prixmodifAyc8.txt>prixmodifAyc9.txt";
system "sed 's/|key/ key/g' prixmodifAyc9.txt>prixmodifAyc10.txt";
system "sed 's/%|/|/g' prixmodifAyc10.txt>prixmodifAyc11.txt";
system "sed ':a;N;$!ba;s/\n//g' prixmodifAyc11.txt>prixmodifAyc12.txt";
所有行都有效,但不是最后一行,我找不到原因(我根本不是 perl 专家,如果我的帖子无法理解,但英语不是我的主要语言,我真的很抱歉。)
我得到的错误是法语:
sed: -e expression n°1, caractère 10: commande `s' inachevée
我认为这是一个串联问题(因为该命令在终端中有效),但我找不到问题出在哪里,希望有人能够提供帮助
【问题讨论】:
-
因为它是一个 Perl 脚本,所以我使用“system”在里面使用 unix 命令(它只是脚本的一部分)perldoc.perl.org/functions/system.html
-
别忘了
$和\是双引号字符串中的特殊字符... -
谢谢池上我已经尝试在 $ 之前放一个 \ 但我忘记了 \ 之前它最终出现了哟非常感谢你:)
-
egad,你为什么要从 perl 调用 sed? perl 可以做 sed 可以做的所有事情,而且速度肯定更快,而无需多次调用 shell 和 sed。
-
您还可以将所有
s/||/|/g替换压缩成一个正则表达式,例如s/|\{2,6\}/|/g
标签: perl unix sed concatenation