如何剪切文件中的每个单词

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}'