我曾经看过一个快速而又脏的Perl实现,用于剪切和粘贴linux命令。它就像是
perl 'print "$F1"' filename
替换cut -f1 filename命令
有人能告诉我Perl的方式是怎样的?具体来说,我很感兴趣,因为与剪切/粘贴不同,它在Windows环境中的工作方式也相同。
答案 0 :(得分:4)
你知道Perl Power Tools吗?它们是您最喜欢的unix命令的实现,但是在Perl中完成。如果你有Perl,你可以在命令行中使用没有杂技的喜欢的命令。 PPT同时包含cut
和paste
。
虽然很多人都指向了某些perl
次切换,但他们忘记链接到perlrun,这解释了所有这些。
答案 1 :(得分:3)
perl -alpe'$_=$F[0]'
perl -alpe'$_="@F[1..3]"'
要提供自定义输入分隔符,
perl -F: -alpe'$_=$F[0]'
要更改输出分隔符,
perl -F: -alpe'$"=":";$_="@F[1..3]"'
当你到达grep
时,
perl -alne'print$F[0]if/blah/'
不太容易。
#!/usr/bin/perl
for (@ARGV ? @ARGV : qw(-)) {
if ($_ eq '-') {push @files, *STDIN}
else {open $files[@files], '<', $_}
}
while (grep defined, (@lines = map scalar <$_>, @files)) {
chomp @lines;
print join("\t", @lines), "\n";
}
答案 2 :(得分:1)
对于cut:我认为您正在寻找perl -ane
解决方案(-e
执行以下代码,-an
将@F = split (/\t/,$line)
应用于文件中的每一行) 。
如下所示:
perl -ane 'print "$F[0]\t$F[1]\n"' file
与:
相同cut -f1,2 file
对于粘贴,我不确定如何执行此操作,但我认为perl -ane
可以将多个文件作为输入。
答案 3 :(得分:0)
Perl相当于cut -c1-2
perl -alne&#39; print substr($ _,0,2)&#39;