我曾经看到一个快速而肮脏的 Perl 实现,用于剪切和粘贴 linux 命令。这有点像
perl 'print "$F1"' filename
替换 cut -f1 文件名命令
有人能告诉我这种 Perl 方式如何吗?具体来说,我很感兴趣,因为这与剪切/粘贴不同,在 Windows 环境中也同样有效。
你知道Perl Power Tools吗?它们是您最喜欢的 unix 命令的实现,但在 Perl 中完成。如果你有 Perl,你可以在命令行上使用你最喜欢的命令,而不需要杂技。PPT既有cut
和paste
.
尽管许多人向您指出了一些perl
开关,但他们忘记了链接到perlrun来解释所有这些。
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";
}
对于剪切:我认为您正在寻找perl -ane
解决方案(-e
执行以下代码,-an
适用@F = split (/\t/,$line)
于文件中的每一行)。所以像:
perl -ane 'print "$F[0]\t$F[1]\n"' file
这等同于:
cut -f1,2 file
对于粘贴,我不确定您如何执行此操作,但我认为perl -ane
可以将多个文件作为输入。
Perl 相当于 cut -c1-2
perl -alne '打印 substr($_,0,2)'