如何编写Perl脚本提取路径数值并截断后续路径?
需求说明
给定输入路径:
/prj/mct/2.5/src/mode/session.v /prj/act/data/1.6/src/log.v
需要定位路径中的版本数值段(如2.5、1.6),移除该数值段之后的所有路径内容,最终输出格式为:
/prj/mct/2.5/. /prj/act/data/1.6/.
Perl脚本实现
以下是实现该需求的Perl脚本:
#!/usr/bin/perl use strict; use warnings; # 逐行读取输入(支持标准输入或文件) while (my $line = <>) { chomp $line; # 匹配并替换路径:保留到数字.数字的段,后续内容替换为/. $line =~ s/(\/\d+\.\d+)\/.*/$1\/./; print "$line\n"; }
脚本说明
<>:自动读取标准输入内容,或命令行指定的文件中的每一行chomp $line:移除每行末尾的换行符,避免干扰正则匹配- 正则替换逻辑:
(\/\d+\.\d+):捕获路径中形如/X.X的版本段(X为数字)\/.*:匹配该版本段之后的所有路径内容$1\/.:将匹配到的部分替换为捕获的版本段加上/.
- 处理后的每行结果直接打印输出
使用方式
- 将脚本保存为
trim_path.pl,添加执行权限:chmod +x trim_path.pl - 直接处理输入文本:
echo -e "/prj/mct/2.5/src/mode/session.v\n/prj/act/data/1.6/src/log.v" | ./trim_path.pl - 处理包含路径的文件(假设文件名为
paths.txt):./trim_path.pl paths.txt
内容的提问来源于stack exchange,提问作者Bibz
相关产品推荐
相关产品推荐

