gpt4 book ai didi

linux - Perl 中的 awk gsub

转载 作者:太空宇宙 更新时间:2023-11-04 05:54:18 25 4
gpt4 key购买 nike

我的文件名为 test.txt,内容如下。

cat test.txt
MOD_12345_67890

我需要删除文件中的“MOD_”

我用过

my $file = `awk '{gsub("MOD_", "");print}' test.txt`;

在 Perl 中。它删除 MOD_ 并按预期打印 12345_67890,但输出后有更多空格。

我的输出语句是

my $new_file = $file . ".dat";
print "$new_file";

我的输出应该如下。

12345_67890.dat

但我得到的输出为

12345_67890
.dat

.dat 将出现在下一行

任何人都可以帮我删除数字后面的空格或垃圾值,输出应该是 12345_67890.dat

最佳答案

默认情况下,Perl 不处理其输入。这意味着每个输入行上的尾随换行符仍然存在,与 Awk 不同。您需要从输入行中chomp换行符,或者执行诸如s/$/.dat/之类的操作。或者使用 -l 选项运行 Perl,这将从输入中删除换行符并将其添加回输出中。

您关于gsub的问题不是很清楚。要删除前导“MOD_”,请使用 s/^MOD_//。要在一个表达式中执行这两种替换,请使用 perl -pe 's/^MOD_(.*)$/$1.dat/' test.txt。括号将它们的匹配捕获到 $1 中;额外的括号会创建额外的反向引用 $2$3 等。

关于linux - Perl 中的 awk gsub,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14101172/

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