使用Bash Shell脚本每日多次读取文件并逐行处理的需求
Shell脚本实现读取固定行数文件并处理的方案
没问题,我来给你写个实用的Shell脚本解决这个需求!这个脚本会逐行读取你的目标文件,把每行内容存入变量,既在控制台输出,又写入到新文件里,还能帮你验证源文件是不是固定的13行。
完整脚本代码
#!/bin/bash # 替换成你实际的源文件和新文件路径 SOURCE_FILE="/path/to/your/source.txt" NEW_FILE="/path/to/your/new_output.txt" # 可选:清空新文件(如果需要每次运行都生成全新内容,就保留这行;要追加的话删掉) > "$NEW_FILE" # 安全逐行读取源文件 while IFS= read -r line; do # 将当前行存入变量var var="$line" # 在控制台输出当前行内容 echo "$var" # 把内容追加写入新文件 echo "$var" >> "$NEW_FILE" done < "$SOURCE_FILE" # 可选:验证源文件是否为13行(符合你的需求,不需要可以删掉) line_count=$(wc -l < "$SOURCE_FILE") if [ "$line_count" -ne 13 ]; then echo "⚠️ 警告:源文件行数不是13行,当前为$line_count行!" fi
关键部分解释
- 路径配置:先把
SOURCE_FILE和NEW_FILE换成你实际的文件路径,比如SOURCE_FILE="./daily_data.txt"; - 清空新文件:
> "$NEW_FILE"这行是每次运行脚本时清空新文件,避免旧内容干扰,如果想保留历史内容、只追加新数据,直接删掉这行就行; - 安全读取行:
IFS= read -r line是Shell里最稳妥的逐行读取方式,能保留行首行尾的空格,也不会把反斜杠当成转义字符; - 行数验证:最后那段代码会检查源文件的行数,因为你提到文件固定是13行,要是行数不对会给出警告,不需要的话可以直接删掉这部分。
使用方法
- 把上面的代码保存成文件,比如
process_daily_file.sh; - 给脚本添加执行权限:
chmod +x process_daily_file.sh; - 运行脚本:
./process_daily_file.sh。
内容的提问来源于stack exchange,提问作者Eric Feillant
相关产品推荐
相关产品推荐

