我有两个文件,File1 和 File2。我想比较这两个文件之间的行并打印。但是我找不到匹配特定字符串的方法。我尝试了下面的编码,但它打印出意外的结果。当它与 File1 的名称(例如ldt
)匹配时,
我想打印 File2 数据(例如 b05* ldt * 10ud0e0)。对于 File1 中带有星号 * 的数据(例如 b05can03*n0b5),* 可以是任何字符。为了匹配,它必须匹配File2中*的头部和尾部。因此,它将打印出b05can03un0b5。并且打印必须按照 File1 的顺序。谁能给我这方面的建议?
文件 1
ldt b05dcc00
mny
b05can03
*n0b5
b05mdd04*n9c9
文件2
/* To start: b05afn10ud0b0 */
/* To start: b05dcc00ud0c0 */
/* To start: b05ldt10ud0e0 */
/* To start: b05dcc10ud0i0 */
/* To start: b05afn10ud0m0 */
/* To start: b05afn10ud0s0 */
/* To start: b05mny00ud0b5 */
/* To start: b05mny00ud0d3 */
/* To start: b05mdd04un9c9 */
/* To start: b05ahn00ud0j5 */
/* To start: b05mny00ud0m7 */
/* To start: b05can03un0b0 */
/* To start: b05can03un0b5 */
编码:
my ( @arr1, @arr2 );
@arr1 = <File1>;
@arr2 = <File2>;
foreach my $line1 (@arr1) {
foreach my $line2 (@arr2) {
if ( $line1 =~ $line2 && $line1 =~ m/^\w+(\W)\w+(.*)/ ) {
print "$line2\n";
}
}
}
预期结果:
b05ldt10ud0e0
b05dcc00ud0c0
b05mny00ud0b5
b05mny00ud0d3
b05mny00ud0m7
b05can03un0b5
b05mdd04un9c9