[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: cat и echo. Подскажите, как правильно.



Здравствуйте.


>> Имею:
>>
>> $ cat 1234.txt
>> 1
>> 2
>> 3
>> 4
>>
>> $ MYVAR=`cat 1234.txt`; echo $MYVAR
>> 1 2 3 4
>>
>> $ MYVAR=`cat 1234.txt`; echo $MYVAR | tr [\ ] [*]
>> 1*2*3*4
>>
>> т.е. переносы строк куда-то пропали (строки соединились через пробел).
>> Как правильно сделать cat (grep и т.п.) файла в переменную, а потом вывести её в многострочном виде?
>>
>>
>>   
>А что должно получиться в результате?
>
>вариант
>while read aaa
>do
> echo $aaa
>done <1234.txt
>
>не устроит?

Я надеялся, что вывод
$ MYVAR=`cat 1234.txt`; echo $MYVAR
будет аналогичен выводу просто
$ cat 1234.txt
но это не так.

Была мысль сразу задачу описать... :-)

Есть большой файл, по нему делается grep (работает несколько /десятков/ секунд) в переменную. Это первый этап. Потом делается несколько операций по этой переменной (подсчёт некоторых строк, какие-то замены и т.п.). Это второй этап. А потом вывод всего этого безобразия, в том числе и переменной, полученной на первом этапе. Так вот на первом этапе результатом grep являются несколько строк, а выводятся они в одну строку, что меня не устраивает. Делать второй этап по основному файлу (вместо переменной, полученной на первом этапе) очень долго. И временный файл использовать не хочется.

Вот расширенный пример:

$ cat 1234.txt
1 1
2 1
3 2
4 2

$ MYVAR=`grep 2 1234.txt`; echo $MYVAR
2 1 3 2 4 2

$ MYVAR=`grep 2 1234.txt`; echo $MYVAR | tr [\ ] [*]
2*1*3*2*4*2

Я надеялся получить на выходе

2 1
3 2
4 2

и 

2*1
3*2
4*2

соответственно.

До свидания.


Reply to: