Bash 用于从文件中读取行的脚本

Bash 用于从文件中读取行的脚本,bash,unix,Bash,Unix,我有一个1000行的文件。我需要每次读取该文件10/20行,然后执行这些命令或将其保存到其他文件中。下次它应该从11月21日开始读取文件并执行相同的操作。这应该一直执行到EOF 从文件读取时,应如何限制数字 感谢您的帮助 提前谢谢 您可以使用多种工具从文件中提取一系列行。其中一个是sed。例如,提取第10到20行的语法是sed-n'10,20p'input.txt。由于您不太清楚所需输出的所有细节,这里提供了一个使用for-循环的解决方案: N=$(cat input.txt | wc -l)

我有一个1000行的文件。我需要每次读取该文件10/20行,然后执行这些命令或将其保存到其他文件中。下次它应该从11月21日开始读取文件并执行相同的操作。这应该一直执行到EOF

从文件读取时,应如何限制数字

感谢您的帮助


提前谢谢

您可以使用多种工具从文件中提取一系列行。其中一个是
sed
。例如,提取第10到20行的语法是
sed-n'10,20p'input.txt
。由于您不太清楚所需输出的所有细节,这里提供了一个使用
for
-循环的解决方案:

N=$(cat input.txt | wc -l)
di=10
((di1=di+1))
for ((i=1; i<=N; i+=di1)); do
   ((j=i+di))
   sed -n "${i},${j}p" input.txt > output${i}.txt
done
N=$(cat input.txt | wc-l)
di=10
((di1=di+1))
对于((i=1;i输出${i}.txt
完成

这将创建名为
outputX.txt
的新文件,其中
X
input.txt

中块的第一行的编号。下面的脚本将从文件“input file.txt”一次读取“N”行(来自控制台的用户输入),并一次执行每一行,并将它们存储到一个新文件中

#!/bin/bash

# Create new file handle 5
exec 5< input-file.txt

read_n() { for i in $(seq $1); do read || return; echo $REPLY; done; }

echo "Enter the number of lines to read each time"
read N

while lines="$(read_n $N)" ; do

# executing N lines one by one.
while read -r line; do
   echo "Executing \" $line \" command"
   exec "$line" &
   echo "++++++++++++++++++++++++++++++"
done <<< "$lines"

# saving the N lines to another file.
echo "$lines"  >> output-file.txt

done <&5

# Close file handle 5
exec 5<&-                                                                                                                                                                                                   
!/bin/bash
#创建新文件句柄5
exec 5完成以下awk解决方案将一次打印10行,分批打印:

awk '{ data[NR]=$0 } END { strt=1;for ( i=strt;i<=NR;i=i+10 )  { end=strt+9;for ( p=strt;p<=end;p++) { print data[p] } strt=end+1 } }'  filename
awk'{data[NR]=$0}END{strt=1;for(i=strt;i)