以下是一些示例文件名:
1_0_1_2A34_8_70_1680000_0_0_0.png
1_0_1_1_1A2C_1_5A2F16_0_0_0.png
1_0_1_3EC_6_601_D7A0000_0_0_0.png
1_0_1_152D_7E3_2_11A2F26_0_0_0.png
首先,我试图让linux将文件名识别为由下划线“_”分隔的10列文本。
例如:
col1_col2_col3_col4_col5_col6_col7_col8_col9_col10.png
然后我想告诉linux在文件名列的第7列的前3个字符中搜索字符串(例如“11A”)。
我有成千上万的这些文件,如果我定期搜索“11A”,我将获得包含11A但在第4,第5和第4版的文件的匹配。第7栏。
答案 0 :(得分:2)
这是一个Perl脚本(我们称之为match7th.pl
),它将打印出第7个字段与给定模式匹配的任何行(例如11A
):
#!/usr/bin/perl -w
use strict;
my $pat = qr/$ARGV[0]/;
while (<STDIN>) {
my (undef, undef, undef, undef, undef, undef, $seventh) = split /_/;
print if defined($seventh) && $seventh =~ $pat;
}
像这样运行:
find . -name '*.png' | perl match7th.pl 11A