LINUX.ORG.RU

Как при помощи перенаправления, добавить текст в файл на новую строку?

 , ,


0

1

Всем привет! Пишу на баше скрипт для сбора информации. Есть много строк А=‘dmidecode -t параметр | grep параметр | awk {‘print $4}’’ В=‘dmidecode -t параметр2 | grep параметр2 | awk {‘print $4}’’ С=‘dmidecode -t параметр3 | grep параметр3 | awk {‘print $4}’’ echo -e ${Cl} “ Param1 : \t $A” echo -e “… $B” echo -e “…$C”

Далее создается файл log_date/time.txt

Вопрос, как перенаправить все верхние строки с echo в файл, что бы они были отдельно на каждой строке? Пробовал добавлять \n после переменной, но выводит ее как текст. Если все это объединить в переменную - не работает. Если кажду строку перенаправлять, получается одна очень длинная строка.

Хотелось бы видеть Param1 : Bios ver 1 Param2 : MB ver Mb_v2 И тд


Вставляйте так:

echo 'echo -e ${Cl} " Param1 : \t $A" echo -e "… $B" echo -e "…$C"'| sed s/echo/'\necho'/g

echo -e ${Cl} " Param1 :         $A" 
echo -e "… $B" 
echo -e "…$C"

ugoday ★★★★★
()
Ответ на: комментарий от Toten_Kopf

Попробую проще. Хочу все строки вывода (echo …) перенаправить в файл ( >> file.txt) Но что бы они были не строкой, а в столбик.

Потому что когда делаю echo “ тут что-то есть» >> file echo «и тут тоже» >>file

При nano file получается Тут что-то есть и тут тоже

Вместо

Тут что-то есть И тут тоже

Sudzon
() автор топика
Ответ на: комментарий от Sudzon

«Не мудпи без меры, перемудришь!»

Копирую с терминала:

$ echo "Тут что-то есть" >>file.txt
$ echo "Тут тоже" >>file.txt
$ echo "..." >>file.txt
$ cat file.txt
Тут что-то есть
Тут тоже
...
andytux ★★★★★
()

Плюсую предыдущего оратора.

Касательно

Пробовал добавлять \n после переменной, но выводит ее как текст.

  1. Если ты хочешь чтобы корректно интерпретировались escape-последовательности, то в echo нужно добавить -e флаг

  2. Помни, что если ты используешь двойные кавычки а не одинарные, то нужно экранировать обратный слеш.

В итого получаем такие варианты:

$ echo -e 'One\nTwo'
One
Two

$ echo -e "One\\nTwo"
One
Two
Kroz ★★★★★
()
Ответ на: комментарий от Sudzon

портянка длиною в километр

Разве это уже не другая проблема? Ну километр и километр…

Shushundr ★★★★★
()
Ответ на: комментарий от Sudzon

ну ту же уже даже про awk в курсе - там в его GNU руководстве в инете есть прекрасные примеры по обработке всякого.

и да, | grep параметр | awk {‘print $4} - избыточная конструкция!

awk цмеет сам прекрасно выделять образцы. читай руководство

вкратце:

/шаблон/{действие}

причём разные шаблоны будут выполняться над 1 строкой последовательно, в порядке расположения в команде (программе) для awk

mumpster ★★★★★
()
Ответ на: комментарий от Sudzon

а, да. echo тоже не нужно если уже всё равно используется awk.

там можно print, printf и т.п. и боком и с прискоком. у тебя же там даже массивы есть!

mumpster ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.
Тема будет перемещена в архив .