LINUX.ORG.RU

[bash] Превратить строку в переменные 1-3 командами

 


0

0

Есть 3 строки:

345;765;3445;6783;7788;3356
235;453;4567;53453;4536;45667
34;3456;1234;6554;35676;2344

1 столбец = arg1
2 столбец = arg2
...
6 столбец = arg6

Можно с помощью 1-3 команд со второй строчки всем столбцам присвоить соответствующие аргументы?

awk -F';' '{ print $1 }' your_sourcefile

печатает 1-ый столбец. Достаточно организовать цикл. Правда, у меня как-то не очень получилось это сделать.

GotF ★★★★★
()
#!/bin/bash

export IFS=';'
tail -n +2 |
while read VAR1 VAR2 VAR3 VAR4 VAR5 VAR6 ; do
        echo "var1="$VAR1 "var2="$VAR2 "var3="$VAR3 "var4="$VAR4 "var5="$VAR5 "var6="$VAR6
done
$ ./vars.sh <<END
345;765;3445;6783;7788;3356
235;453;4567;53453;4536;45667
34;3456;1234;6554;35676;2344
END
var1=235 var2=453 var3=4567 var4=53453 var5=4536 var6=45667
var1=34 var2=3456 var3=1234 var4=6554 var5=35676 var6=2344
$
Deleted
()
#!/bin/bash

for i in `sed -n 2 s/;/ /gp file`; do
   eval var$(( cnt+=1 ))=$i
done

for(( i=1; $i <= $cnt; i++ )); do
   echo $(( var$i ))
done
TGZ ★★★★
()
set `echo $STR1 | tr ';' ' '`
echo $1
echo $2
echo $3
...
sdio ★★★★★
()

И никто не вспомнил про массивы:

IFS=';' var=($string) ; echo ${var[1]}

DonkeyHot ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.