这是一个可能的实现:

#!/bin/bash

# 读取文件的全量内容并记录长度
content=$(cat file.txt)
length=$(echo -n '$content' | wc -c)

# 初始化循环变量
start=1
end=$length

# 开始循环
while true; do
  # 从上次记录的位置开始查找下一个 '2J' 所在的行数
  next_2j=$(echo -n '$content' | tail -c +$start | grep -n -m 1 '^2J$' | cut -d ':' -f 1)
  # 如果找不到下一个 '2J',则输出剩余部分并结束循环
  if [ -z '$next_2j' ]; then
    echo -n '$content' | tail -c +$start
    break
  fi
  # 输出当前部分并更新循环变量
  echo -n '$content' | tail -c +$start | head -c $((next_2j - 1))
  start=$((start + next_2j))
done

该脚本首先使用 cat 命令读取整个文件的内容,并使用 wc 命令计算其长度。然后,它使用一个 while 循环来不断读取指定范围内的内容并输出,直到找到下一个包含 '2J' 的行。在每次循环中,脚本使用 tail 命令从上次记录的位置开始查找下一个包含 '2J' 的行,然后使用 head 命令输出当前部分的内容。最后,它更新循环变量 start 以便下一次循环从正确的位置开始。

Shell 脚本:分段读取文本文件并提取包含 '2J' 的行

原文地址: https://www.cveoy.top/t/topic/nVy2 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录