shell实现遍历文件夹下文件,并将指定关键字所在行的前后信息记录在新文件

背景

shell脚本遍历指定文件夹下的所有文本文件,并将包括指定关键字所在行的前后指定行显示在新文本文件中,主要用于文本中指定内容监控。

#!/bin/bash

# 定义变量
search_dir="your_directory_path"  # 替换为你要遍历的文件夹路径
keywords=("keyword1" "keyword2" "keyword3")  # 替换为你要搜索的多个关键字
output_file="output.txt"  # 输出文件

# 清空输出文件
> "$output_file"

# 遍历文件夹中的所有文件
for file in "$search_dir"/*; do
    if [ -f "$file" ]; then
        for keyword in "${keywords[@]}"; do
            # 使用grep找到关键字所在的行号
            grep -n "$keyword" "$file" | while IFS=: read -r line_number line_content; do
                # 计算前后5行的行号范围
                start=$((line_number - 5))
                end=$((line_number + 5))

                # 如果开始行小于1,设置为1
                if [ "$start" -lt 1 ]; then
                    start=1
                fi

                # 打印文件名和行号范围
                echo "File: $file (Lines $start to $end, Keyword: $keyword)" >> "$output_file"

                # 提取行号范围的内容并追加到输出文件
                sed -n "$start,${end}p" "$file" >> "$output_file"
                echo "------------------------------" >> "$output_file"
            done
        done
    fi
done

echo "搜索完成,结果已保存到 $output_file"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

平乾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值