以下是使用bash实现的程序:

#!/bin/bash

# 定义文件路径和记录上次读取位置的文件
file="/path/to/text/file"
pos_file="/path/to/position/file"

# 检查记录位置文件是否存在,不存在则创建
if [ ! -f "$pos_file" ]; then
echo 1 > "$pos_file"
fi

# 读取上次记录的位置
pos=$(cat "$pos_file")

# 从上次记录的位置开始读取文件
while read -r line; do
  # 输出读取的内容
echo "$line"
  
  # 如果行中包含了2J,则停止读取
if echo "$line" | grep -q "2J"; then
    break
  fi
  
  # 更新记录的位置
  (( pos++ ))
done < <(tail -n +"$pos" "$file")

# 将最新的位置记录到文件中
echo "$pos" > "$pos_file"

这个程序首先定义了要读取的文本文件的路径和记录上次读取位置的文件的路径。如果记录位置的文件不存在,则会创建一个并将位置设置为1。

然后,程序会读取上次记录的位置,并使用tail命令从上次记录的位置开始读取文件内容。读取到的每一行都会输出,并检查其中是否包含了“2J”。如果包含了“2J”,则程序会停止读取。

最后,程序会将最新的位置记录到文件中,以便下次读取时从正确的位置开始。

Shell脚本:从指定位置读取文本文件至第一个“2J”出现行

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

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