KSH HP-SOL-Lin Не может использовать xAWK
У меня есть несколько довольно длинных строк, и я хочу разбить их на более мелкие подстроки.
Что я имею
String = "word1 word2 word3 word4 .....wordx"
Что я хочу
String1="word1 word2"
String2="word3 word4"
String3="word4 word5"
Stringx="wordx wordx+1"
etc.....
Как я могу разбить это на то, где, если моя строка длиннее x слов, разбить на более мелкие строки не длиннее x? Я понятия не имею, какой длины будет каждая строка. Мы можем проверить это, но это не будет последовательным.
StrLen=`echo $string |wc -w`
Некоторые строки длиннее 2000 слов, поэтому я не могу использовать массив оболочки, так как максимальное количество полей составляет 1024.
идеи?
Вот что я придумал на основе комментариев ниже
FIELDS=`echo $String | wc -w`
((n=$FIELDS/2+1))
i=1
while [[ $i -le $n ]]; do
typeset STRING$i=`echo $String | cut -d" " -f$CUTSTART-$CUTEND`
do stuff
i=`expr $i+1`
CUTSTART=`expr $CUTSTART+1`
CUTEND=`expr $CUTEND+1`
done
Кажется, все еще есть проблемы с набранной частью. Предположения
i=1
CUTSTART=1
CUTEND=2
String=one two three
myserver> typeset STRING=`echo $String | cut -d" " -f$CUTSTART-$CUTEND`
myserver> echo $STRING
myserver> one two
myserver>
myserver> typeset STRING$i=`echo $String | cut -d" " -f$CUTSTART-$CUTEND`
myserver> echo $STRING1
myserver> one
в чем проблема, когда $i испортил мою команду echo|cut?
echo ${.sh.version}
? Если нет, посмотрите, можете ли вы найти ksh93 или dtksh. Я думаю, что это дает вам больше гибкости в отношении размера массива (не уверен). Удачи. - person shellter   schedule 20.09.2012Version AJM 93t+ 2010-02-02
- person nitrobass24   schedule 20.09.2012typeset -A assocArr; assocArr["$((++i))"]="wrd1"
. Извините, есть 2 отпуска. удачи. - person shellter   schedule 20.09.2012