Титла: bash script
Публикувано от: anger в Mar 05, 2005, 15:05
Здравейте, Опитвам се да напиша едно скриптче, което чете стойности от .txt файл с n реда и m полета на ред. Доколкото прочетох, bash поддържа само едномерни масиви, а на мен ми се искаше да вкарам в масив данните от файла и да мога да оперирам с тях. Ако можете, дайте ми някакъв прост пример с цикъл, четене от фаил и масив. Благодаря предварително
Титла: bash script
Публикувано от: VladSun в Mar 05, 2005, 18:24
man cut man awk прим. Цитат | awk '{print $1 $2}' |
Титла: bash script
Публикувано от: rpetrov в Mar 05, 2005, 19:20
Или пък Примерен код | #!/bin/sh
IFS=':' declare -a arr
cat /etc/passwd | \ while read line; do arr=($line) echo ${arr[0]} ${arr[6]} done |
IFS=... задава разделителя
Аз лично, избягвам да ползвам масиви.
Титла: bash script
Публикувано от: foo в Mar 06, 2005, 18:41
 5--> Цитат (anger @ Март 05 2005,16 5) | Здравейте, Опитвам се да напиша едно скриптче, което чете стойности от .txt файл с n реда и m полета на ред. Доколкото прочетох, bash поддържа само едномерни масиви, а на мен ми се искаше да вкарам в масив данните от файла и да мога да оперирам с тях. Ако можете, дайте ми някакъв прост пример с цикъл, четене от фаил и масив. Благодаря предварително |
Примерен код | #!/bin/bash -f
_file="anger.txt"
# file:anger.txt: # # 11 12 13 # 21 22 23 # 31 32 33
_ncol=$1 _nrow=$2
_i=1
for _item in $(cat $_file); do
a[$_i]=$_item
(( _i++ )) done
function index { local _row=$1 local _col=$2
local _index=$(echo "($_row - 1) * $_ncol + $_col" | bc)
echo $_index }
for (( _i = 1; _i <= _nrow; _i++ )); do
for (( _j = 1; _j <= _ncol; _j++ )); do
_index=$(index $_i $_j)
echo -n "${a[_index]} " done
echo done
# ouptut: ./anger.bash 3 3 # # 11 12 13 # 21 22 23 # 31 32 33
exit 0
|
Титла: bash script
Публикувано от: anger в Mar 06, 2005, 20:01
|