gpt4 book ai didi

perl - 在perl中用多个空格替换单个空格

转载 作者:行者123 更新时间:2023-12-02 09:09:05 25 4
gpt4 key购买 nike

我需要用多个空格替换单个空格,以便第二个字段始终从特定位置开始(这里 36 始终是第二个字段的位置)。我为此编写了一个 perl 脚本:

while(<INP>)
{
my $md=35-index($_," ");
my $str;
$str.=" " for(1..$md);
$_=~s/ +/$str/;
print "$_" ;
}

是否有更好的方法,只需在 =~s///中使用正则表达式,以便我可以直接在 CLI 上使用它而不是脚本。

最佳答案

假设数据中的字段由空格分隔

while (<$fh>) {
my ($first, @rest) = split;
printf "%-35s @rest\n", $first;
}

由于 - 采用 printf 格式,第一个字段现在为 36 宽,左对齐。请参阅sprintf对于许多细节。其余部分在原始空格分隔字段之间使用单个空格打印,但可以根据需要完成(制表符分隔、固定宽度...)。

或者您可以通过将行分成两部分来保留第一个字段之后的“其余部分”不变

while (<$fh>) {
my ($first, $rest) = /(\S+)\s+(.*)/;
printf "%-35s $rest\n", $first;
}

(或使用 split ' ', $_, 2 而不是正则表达式)

如有其他要求,请详细说明。

关于perl - 在perl中用多个空格替换单个空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54801987/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com