如何剪切文件中的每个单词
How to cut each word in a file
是否有命令可以将制表符分隔的文件转换为只给出每个单词的前 4 个字母?
例如。正在打开这个文件
Jackal Poorest Kingship Twinkle
Viscount George Lizard
Stone Goose Elephant Yvonne Chicken
Gecko Amoeba
Richard
到这个文件
Jack Poor King Twin
Visc Geor Liza
Ston Goos Elep Yvon Chic
Geck Amoe
Rich
谢谢
使用substr
到trim每个单词。命名以下 trim.pl
:
#!/usr/bin/env perl
use strict;
use warnings;
while (<>) {
chomp;
my @words = split /\s+/;
my @trim;
for my $word (@words) {
push @trim, substr($word,0,4);
}
print join ' ', @trim;
print "\n";
}
运行 为:
cat names.txt | trim.pl
输出:
Jack Poor King Twin
Visc Geor Liza
Ston Goos Elep Yvon Chic
Geck Amoe
Rich
试试这个模式匹配足以做到这一点
while(<DATA>)
{
(@ar) = $_ =~m/(.{4}).+?\s/g;
print "@ar\n";
}
__DATA__
Jackal Poorest Kingship Twinkle
Viscount George Lizard
Stone Goose Elephant Yvonne Chicken
Gecko Amoeba
Richard
output
Jack Poor King Twin
Visc Geor Liza
Ston Goos Elep Yvon Chic
Geck Amoe
Rich
perl -lane '$,=" "; print map substr($_,0,4),@F' input
命令行中的 Perl,
perl -anE 'say join " ", map /(.{1,4})/, @F' file.txt
或
use feature 'say';
while (my $line = <>) {
my @F = split ' ', $line;
say join " ", map /(.{1,4})/, @F;
}
更具可读性的 awk 版本
awk '{l=sep=""; for(i=1;i<=NF;i++){l = l sep substr($i,1,4); sep=FS}; print l}'
是否有命令可以将制表符分隔的文件转换为只给出每个单词的前 4 个字母?
例如。正在打开这个文件
Jackal Poorest Kingship Twinkle
Viscount George Lizard
Stone Goose Elephant Yvonne Chicken
Gecko Amoeba
Richard
到这个文件
Jack Poor King Twin
Visc Geor Liza
Ston Goos Elep Yvon Chic
Geck Amoe
Rich
谢谢
使用substr
到trim每个单词。命名以下 trim.pl
:
#!/usr/bin/env perl
use strict;
use warnings;
while (<>) {
chomp;
my @words = split /\s+/;
my @trim;
for my $word (@words) {
push @trim, substr($word,0,4);
}
print join ' ', @trim;
print "\n";
}
运行 为:
cat names.txt | trim.pl
输出:
Jack Poor King Twin
Visc Geor Liza
Ston Goos Elep Yvon Chic
Geck Amoe
Rich
试试这个模式匹配足以做到这一点
while(<DATA>)
{
(@ar) = $_ =~m/(.{4}).+?\s/g;
print "@ar\n";
}
__DATA__
Jackal Poorest Kingship Twinkle
Viscount George Lizard
Stone Goose Elephant Yvonne Chicken
Gecko Amoeba
Richard
output
Jack Poor King Twin
Visc Geor Liza
Ston Goos Elep Yvon Chic
Geck Amoe
Rich
perl -lane '$,=" "; print map substr($_,0,4),@F' input
命令行中的 Perl,
perl -anE 'say join " ", map /(.{1,4})/, @F' file.txt
或
use feature 'say';
while (my $line = <>) {
my @F = split ' ', $line;
say join " ", map /(.{1,4})/, @F;
}
更具可读性的 awk 版本
awk '{l=sep=""; for(i=1;i<=NF;i++){l = l sep substr($i,1,4); sep=FS}; print l}'