Свяжите строки в ударе

Я имею в сценарии удара:

for i in `seq 1 10`
do
   read AA BB CC <<< $(cat file1 |  grep DATA)
   echo ${i}
   echo ${CC}
   SORT=${CC}${i}
   echo ${SORT}
done

таким образом, "i" является целым числом, и CC является строкой как "СЕГОДНЯ"

Я хотел бы добраться затем в SORT, "TODAY1", и т.д.

Но я добираюсь "1ODAY", "2ODAY" и так

Где ошибка?

Спасибо

7
задан Alberto Zaccagni 4 March 2010 в 13:34
поделиться

3 ответа

Вам следует попробовать

SORT="${CC}${i}"

Убедитесь, что ваш файл не содержит "\ r", которое должно заканчиваться только на конец $ CC. Это вполне может объяснить, почему вы получаете "1ODAY".

Попробуйте включить | tr '\ r' '' после команды cat

7
ответ дан 7 December 2019 в 03:14
поделиться

ghostdog прав: с опцией -r программа read избегает потенциальных ужасов, таких как CRLF. Использование массивов делает опцию -r более приятной:

for i in `seq 1 10`
do
   read -ra line <<< $(cat file1 |  grep DATA)
   CC="${line[3]}"
   echo ${i}
   echo ${CC}
   SORT=${CC}${i}
   echo ${SORT}
done
1
ответ дан 7 December 2019 в 03:14
поделиться

try

   for i in {1..10}
    do
      while read -r line
      do
        case "$line" in
         *DATA* ) 
             set -- $line
             CC=$3
             SORT=${CC}${i}
             echo ${SORT}
        esac
      done <"file1" 
    done

Иначе, покажите пример файла1 и желаемый результат

1
ответ дан 7 December 2019 в 03:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: