【shell脚本】比较两文件中每行数据的重复字段

脚本

#!/bin/bash

# 检查是否提供了两个文件名
if [ $# -ne 2 ]; then
    echo "用法: $0 file1 file2"
    exit 1
fi

file1="$1"
file2="$2"

# 比较文件内容
line_number1=0
while IFS= read -r line1; do
    line_number1=$((line_number1 + 1))
    line_number2=0
    while IFS= read -r line2; do
        line_number2=$((line_number2 + 1))
        for (( i = 0; i < ${#line1} - 1; i++ )); do
            for (( j = 0; j < ${#line2} - 1; j++ )); do
                if [[ "${line1:$i:2}" == "${line2:$j:2}" ]]; then   # ${line1:$i:2}分段可以按需设置,如果想看连续3个字符相同2换成3
                    echo "在文件 $file1 的第 $line_number1 行和文件 $file2 的第 $line_number2 行中找到重复的连续字符: ${line1:$i:2}"
                fi
            done
        done
    done < "$file2"
done < "$file1"
  1. 添加行号变量line_number1line_number2 用来分别跟踪 file1file2 的当前行号。
  2. 行号递增:每次读取新的一行时,相应的行号变量加1 (line_number1=$((line_number1 + 1))line_number2=$((line_number2 + 1)))。
  3. 在输出中显示行号:在输出结果中添加了行号信息,使得每次找到重复的连续字符时,能够打印出在两个文件中具体的行号。

效果

测试文件入下

在这里插入图片描述

  • 不加参数

    在这里插入图片描述

  • 加测试文件

    在这里插入图片描述

运行这个脚本时,它会递归比对并输出在两个文件中发现的重复连续字符及其所在的行号。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值