shell脚本实现将文本内的内容按800行拆分成多个子文件
时间: 2024-11-18 13:18:58 浏览: 8
在Shell脚本中,可以使用循环和分割命令来实现将长文本文件的内容按每800行拆分成多个子文件。下面是一个基本示例,假设输入文件名为input.txt:
```bash
#!/bin/bash
# 检查输入文件是否存在
if [ ! -f input.txt ]; then
echo "Input file 'input.txt' not found."
exit 1
fi
# 创建目标目录(如果不存在)
mkdir -p output_files
# 计算需要创建多少个子文件
total_lines=$(wc -l < input.txt)
lines_per_file=800
num_files=$((total_lines / lines_per_file + (total_lines % lines_per_file != 0)))
# 使用逐行读取并分块的方式创建子文件
line_count=0
for ((i=1; i<=num_files; i++)); do
# 文件名格式:output_files/file_$(i).txt
file_name="output_files/file_$i.txt"
while IFS= read -r line && [[ $((line_count++)) -lt $lines_per_file ]]; do
echo "$line" >> $file_name
done < input.txt
# 如果最后一部分不足800行,则单独处理
if ((line_count < lines_per_file)); then
tail -n +$((line_count+1)) input.txt | head -n $lines_per_file >> $file_name
fi
done
echo "Text has been split into multiple files in the 'output_files' directory."
阅读全文