Shell 脚本:分段读取文本文件并提取包含 '2J' 的行
这是一个可能的实现:
#!/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 以便下一次循环从正确的位置开始。
原文地址: https://www.cveoy.top/t/topic/nVy2 著作权归作者所有。请勿转载和采集!