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

Regex 如何剪切文件中的每个单词,regex,perl,unix,cut,Regex,Perl,Unix,Cut,是否有命令可以将制表符分隔的文件转换为每个单词的前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 到这个文件 Jackal Poorest Kin

是否有命令可以将制表符分隔的文件转换为每个单词的前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
到这个文件

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.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";
}
哪些产出:

Jack Poor King Twin
Visc Geor Liza
Ston Goos Elep Yvon Chic
Geck Amoe
Rich

使用
substr
修剪每个单词。命名以下
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";
}
哪些产出:

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
while()
{
(@ar)=$=~m/(.{4})。+?\s/g;
打印“@ar\n”;
}
__资料__
豺狼王权闪烁
乔治·利扎德子爵
石鹅大象伊冯鸡
壁虎变形虫
理查德
输出
杰克可怜的国王双胞胎
维斯克乔治莉莎酒店
Ston Goos Elep Yvon Chic
艾美
富有的

尝试此模式匹配,使其足以完成此操作

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
while()
{
(@ar)=$=~m/(.{4})。+?\s/g;
打印“@ar\n”;
}
__资料__
豺狼王权闪烁
乔治·利扎德子爵
石鹅大象伊冯鸡
壁虎变形虫
理查德
输出
杰克可怜的国王双胞胎
维斯克乔治莉莎酒店
Ston Goos Elep Yvon Chic
艾美
富有的

命令行中的Perl

perl -anE 'say join " ", map /(.{1,4})/, @F' file.txt

使用功能“说”;
while(我的$line=){
my@F=拆分“”,$line;
说join“,map/(.{1,4})/,@F;
}

命令行中的Perl

perl -anE 'say join " ", map /(.{1,4})/, @F' file.txt

使用功能“说”;
while(我的$line=){
my@F=拆分“”,$line;
说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}'

awk'{l=sep=”“;用于(i=1;i更具可读性的awk版本

awk '{l=sep=""; for(i=1;i<=NF;i++){l = l sep substr($i,1,4); sep=FS}; print l}'

awk'{l=sep=“”;for(i=1;i)您想用哪种语言编写此代码?最好是Unix还是perl(一行代码)。我尝试了不同的cut语法,似乎我所能做的就是将其拆分为列,分别剪切-c1-4并粘贴,但是这非常低效。您想用哪种语言编写此代码?Unix还是perl(一行代码)最好是。我尝试过不同的剪切语法,我能做的似乎就是分成列,分别剪切-c1-4和粘贴,但是这是非常低效的。一些与代码配套的解释会使它成为更好的答案。是的,但它也会从读者那里偷走解出它的乐趣!好吧,解释应该足够简短,以便引起兴趣和足够长的时间来涵盖主题;如裙子:)一些与代码配套的解释将使其成为更好的答案。是的,但它也会从读者那里偷走理解它的乐趣!好吧,解释应该足够短以引起兴趣和足够长的时间来涵盖主题;如裙子:)如果没有任何解释和用L命名变量,我不会称之为可读的。如果没有任何解释和用L命名变量,我不会称之为可读的。