I want to choose a range of rows, every 9 rows start a new range. In the next example new range start every 8 positions: Line 2, 10 and 18 are the tittle, Line 3, 11 and 19 are the comment, Line 4, 12 and 19 are the path…
I need to parametrize this for after insert in a DB:
Example:
JavaScript
x
Line1
Line2 [logs-app1]
Line3 comment = Logs
Line4 path = /data/logs/
Line5 valid users = "Access group1"
Line6 read only = yes
Line7 writable = no
Line8 browseable = no
Line9
Line10 [logs-app2]
Line11 comment = Logs
Line12 path = /data/logs/
Line13 valid users = "Access group2"
Line14 read only = yes
Line15 writable = no
Line16 browseable = no
Line17
Line18 [logs-app3]
Line19 comment = Logs
Line20 path = /data/logs/
Line21 valid users = "Access group3"
Line22 read only = yes
Line23 writable = no
Line24 browseable = no
Line25
How do I select a specific range of rows from a text file with bash script?
Thanks @glenn jackman for your help. My objective is to have all variables for after insert in a DB oracle ordinated Schema. What is the best way in order to do this?
JavaScript
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
Advertisement
Answer
You could do this to get the nth range of lines:
JavaScript
$ 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
JavaScript
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