是否有Perl替代剪切和粘贴shell命令?

时间:2009-11-12 15:50:24

标签: perl paste cut

我曾经看过一个快速而又脏的Perl实现,用于剪切和粘贴linux命令。它就像是 perl 'print "$F1"' filename 替换cut -f1 filename命令

有人能告诉我Perl的方式是怎样的?具体来说,我很感兴趣,因为与剪切/粘贴不同,它在Windows环境中的工作方式也相同。

4 个答案:

答案 0 :(得分:4)

你知道Perl Power Tools吗?它们是您最喜欢的unix命令的实现,但是在Perl中完成。如果你有Perl,你可以在命令行中使用没有杂技的喜欢的命令。 PPT同时包含cutpaste

虽然很多人都指向了某些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;