我对perl完全陌生,希望您能在这一行代码中对我有所帮助。 这个问题与此here有关,但是并不能完全回答我的问题。我尝试寻找它,但是我变得更加困惑。
我有一个txt输入(批处理),我希望在第一行中打印文件名,但用特定的文本包装。我稍后将这些文件转换为html,因此我希望.name之前打印"<div class="head">"
,之后打印"</div>"
。
这是我的代码,它可以打印名称:
perl -i -pe 'BEGIN{undef $/;} s/^/$ARGV\n/' `find . -name '*.txt'`
我通过首先导航到所有文件所在的目录来运行此文件。 文件名示例:2016-05-20_18.32.08.txt 这些文件是平面文字诗歌,在输出中我得到: ./2016-05-20_18.32.08.txt 在第一行。
我尝试过这样的事情:
perl -i -pe 'BEGIN{undef $/;} s/^/$ARGV\n/' `find . -name ‘“<div class="head”>”’*.txt’”</div>”’
但是它当然不起作用。它只是给我一个>
我需要在这一部分s/^/$ARGV\n/'
中添加参数,但是我已经很难定义它。
你能帮忙吗?
此外,文件名开头以./开头,是否有一种简单的方法来排除该文件名?
答案 0 :(得分:0)
我敢肯定有一种更优雅的方法,但是类似的事情会起作用
#!/usr/bin/perl
undef $/;
for (@ARGV){
open($fh,$_);
$content=<$fh>;
close($fh);
open($fh,">$_");
print $fh "<div class=\"head\">$_</head>\n$content";
close($fh)
}
答案 1 :(得分:0)
perl -i -pe 'BEGIN{undef $/;} s/^/<div class=head> $ARGV <\/div>\n<div class=poem>\n/; s/$/\n<\/div>/' `find . -name '*.txt'`
这应该有效。但是,如果您不熟悉perl,建议您尝试使用脚本而不是单行代码。
-i标志将就地编辑文件。因此,如果要使用html文件,请删除-i并重定向到另一个.html文件。