Linux 如何使用bash脚本从文本文件中选择特定范围的行

Linux 如何使用bash脚本从文本文件中选择特定范围的行,linux,bash,Linux,Bash,我想选择一个行范围,每9行开始一个新的范围。在下一个示例中,新范围每隔8个位置开始:第2、10和18行是标题,第3、11和19行是注释,第4、12和19行是路径 我需要在数据库中插入后对此进行参数化: 例如: 第1行 第2行[logs-app1] 第3行注释=日志 第4行路径=/data/logs/ 第5行有效用户=访问组1 第6行只读=是 第7行可写=否 第8行可浏览=否 第9行 第10行[logs-app2] 第11行注释=日志 第12行路径=/data/logs/ 第13行有效用户=访问组

我想选择一个行范围,每9行开始一个新的范围。在下一个示例中,新范围每隔8个位置开始:第2、10和18行是标题,第3、11和19行是注释,第4、12和19行是路径

我需要在数据库中插入后对此进行参数化:

例如:

第1行 第2行[logs-app1] 第3行注释=日志 第4行路径=/data/logs/ 第5行有效用户=访问组1 第6行只读=是 第7行可写=否 第8行可浏览=否 第9行 第10行[logs-app2] 第11行注释=日志 第12行路径=/data/logs/ 第13行有效用户=访问组2 第14行只读=是 第15行可写=否 第16行可浏览=否 第17行 第18行[logs-app3] 第19行注释=日志 第20行路径=/data/logs/ Line21有效用户=访问组3 第22行只读=是 第23行可写=否 第24行可浏览=否 第25行 如何使用bash脚本从文本文件中选择特定范围的行

感谢@glenn jackman的帮助。我的目标是将插入后的所有变量都放在DB oracle协调模式中。要做到这一点,最好的方法是什么

get_range() {
    local -i i=$1
    local start=$((8*(i-1)+1)) end=$((8*i))
    sed -n "$start,$end p; $end q" file.txt
}

for i in $(seq 1 $END); do get_range ($i); done ?????


while
    read
    IFS=  read -r app
    IFS== read -r _ comment
    IFS== read -r _ path
    IFS== read -r _ users
    IFS== read -r _ read_only
    IFS== read -r _ writable
    IFS== read -r _ browsable
do
    echo "var1: $app"
    echo "var2: $comment"
    echo "var3: $path"
    echo "var4: $users"
    echo "var5: $read_only"
    echo "var6: $writable"
    echo "var7: $browsable"
done < file.txt

您可以这样做以获得第n个行范围:

$ get_range() {
    local -i i=$1
    local start=$((8*(i-1)+1)) end=$((8*i))
    sed -n "$start,$end p; $end q" file
}
$ get_range 2

[logs-app2]
         comment = Logs
         path = /data/logs/
         valid users = "Access group2"
         read only = yes
         writable = no
         browseable = no

输出示例:$var1=[logs-app1]$var2=logs$var3=/data/logs$var4=accesgroup1$var5=yes$var6=no$var7=noIt很难说代码出了什么问题,因为您没有提供代码或遇到了什么错误。另请看/读取行时bin/bash filename='exit.txt'n=0;做回音线$n:$line n=$n+1 done<$filename我需要一个输入,比如:$var1=[logs-app1]$var2=logs$var3=/data/logs$var4=Acces group1$var5=yes$var6=no$var7=no请在你的问题中添加所有必要的要求。我添加了这些信息,你认为我的方式正确吗?提前感谢你的帮助,伙计。有什么办法吗,伙计?使用while循环。你还需要什么?
while
    read
    IFS=  read -r app
    IFS== read -r _ comment
    IFS== read -r _ path
    IFS== read -r _ users
    IFS== read -r _ read_only
    IFS== read -r _ writable
    IFS== read -r _ browsable 
do
    echo "var1: $app"
    echo "var2: $comment"
    echo "var3: $path"
    echo "var4: $users"
    echo "var5: $read_only"
    echo "var6: $writable"
    echo "var7: $browsable" 
done < file