将文件名写为 txt 文件中的第一行 + 周围的文本 / osx perl
write filename as first line in a txt file + text around it / osx perl
我是 perl 的新手,希望您能帮助我处理这行代码。
这个问题与这个 有关,但它并没有完全回答我的问题。我试图寻找它,但我越来越困惑。
我有一个 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/'
但我在定义它时遇到了麻烦。
你能帮忙吗?
此外,文件名打印以./开头,有没有简单的方法可以排除?
我确定有更优雅的方法,但像这样的方法会起作用
#!/usr/bin/perl
undef $/;
for (@ARGV){
open($fh,$_);
$content=<$fh>;
close($fh);
open($fh,">$_");
print $fh "<div class=\"head\">$_</head>\n$content";
close($fh)
}
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 文件。
我是 perl 的新手,希望您能帮助我处理这行代码。
这个问题与这个
我有一个 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/'
但我在定义它时遇到了麻烦。
你能帮忙吗?
此外,文件名打印以./开头,有没有简单的方法可以排除?
我确定有更优雅的方法,但像这样的方法会起作用
#!/usr/bin/perl
undef $/;
for (@ARGV){
open($fh,$_);
$content=<$fh>;
close($fh);
open($fh,">$_");
print $fh "<div class=\"head\">$_</head>\n$content";
close($fh)
}
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 文件。