【问题标题】:Perl print switches in terminal终端中的 Perl 打印开关
【发布时间】:2014-06-08 08:40:05
【问题描述】:

如果我想做这样的事情

      perl abc.pl > xyz.html

我应该使用什么命令才能将 xyz.html 存储到变量中。我不允许更改以上任何内容,除了 html 文件的名称

【问题讨论】:

  • 您希望终端打印文字 xyz.html 或其值?
  • 文字 xyz.html。我可以稍后将此文件添加到变量中以检查过滤器
  • 为什么不只是echo xyz.html?在执行 perl 命令之后?
  • 我只是想知道当我输入上述命令时如何获取文字文件,以便我可以进行下一步。注意:我的意思是我在 > 符号之后输入的任何内容都是我以后要处理的文件。我已经完成了第二部分,只是想知道如何解决这个问题
  • 编写您的 Perl 脚本以将文件名作为参数,而不是使用 shell 重定向。

标签: regex perl find match


【解决方案1】:

根据你的cmets,你可以这样做,但它很丑:

file=$(history | awk '/perl.*>/&& !/history/ {x=$NF} END{print x}')
echo $file

基本上它运行history 命令来向你的shell 询问你最近运行的命令列表。然后它使用awk 查找所有包含perl> 的。当它找到一个时,它将最后一个单词(可能是您重定向到的文件名)保存在变量x 中,然后在最后打印出任何 Perl 脚本重定向到的最后一个文件名。丑陋但实用。

HOWTO 使用上述方法调试问题...

要调试上面的脚本,首先尝试单独使用history 命令

history

它应该给你一个你输入的所有命令的列表。现在试试awk

awk 'BEGIN{print "Hello"; exit}'
Hello

如果这不起作用,试试这个

awk "BEGIN{print 7; exit}"

并继续尝试,直到您让 awk 工作,然后看看引用如何在 Cygwin 上工作。

那你应该做的事

history | awk '/perl/{print}'

查看您已运行的所有 perl 程序,很快您将了解如何在此答案开头运行我建议的代码。

或者,您可以这样做,这样会更清洁...

OUTFILE=xyz.html
perl abc.pl > $OUTFILE 
perl def.pl $OUTFILE

原答案

Perl 完全不知道它正在写入xyz.html,它只知道它正在写入stdout,而shell 在 Perl 不知情的情况下将其定向到xyz.html

如果您只是为流程的下一部分保存文件,为什么不使用管道将第一个程序的输出直接发送到第二个程序,如下所示:

 perl abc.pl | perl secondProgram

那么第二个程序可以从它的stdin 而不是从文件中读取。此方法的优点是无需创建临时文件。

【讨论】:

  • 嗨,马克。感谢您的回复。你看,我目前被分配了一个任务,我必须运行这样的东西:perl checkHtml.pl
  • 我在回答的开头添加了一个新的建议,请再看一遍。
  • 您好,先生,“...然后在最后打印出任何 Perl 脚本重定向到的最后一个 FILENAME”。是指html文件的名称,还是html文件中的值?对不起,我在编码方面很糟糕。谢谢。当我尝试执行此操作时出现此错误。 perl p4task1.pl
  • Bareword 在 p4task1.pl 第 6 行,“$(history” 附近的操作员预期的位置找到了字符串(在历史之前缺少运算符?)在 p4task1.pl 第 6 行,“awk '/ 附近的操作员预期的位置找到字符串perl.*&& !/history/ {x=$NF} END{print x}'" (你需要预先声明 awk 吗?)不能修改 p4task1.pl 第 6 行的标量赋值中的常量项,靠近 " $(history" 在 p4task1.pl 第 6 行出现语法错误,靠近 "$(history" 全局符号 "$file" 在 p4task1.pl 第 7 行需要明确的包名称。由于编译错误,p4task1.pl 的执行中止。
  • 呃!您在(无用的)Windows 上,不是吗?尝试将单引号改为双引号。
猜你喜欢
  • 2022-11-02
  • 2023-04-04
  • 1970-01-01
  • 2014-11-23
  • 2013-06-27
  • 2013-09-14
  • 2011-08-15
  • 2010-09-30
  • 2020-05-14
相关资源
最近更新 更多