LINUX.ORG.RU

[смеха ради] bash записать через echo 16 строк в файл


1

2

Есть нужда заполнить конфиг такими строками:

termadmin@t1

...

termadmin@t16

Как это сделать на bash..?

Можно руками, это я понимаю накопипастить дело двух секунд. Просто стало интересно...

Цикл+(i+1)+break 16;

Или можно более просто и красиво?

★★★★★
for i in {1..16}; do echo "termadmin@t$i" >> file; done
anonymous
()
Ответ на: комментарий от YAR

Даже правильнее так:

rain@acnote:~$ echo -en termadmin@t{1..16}"\n^H"
termadmin@t1                                                                                                                   termadmin@t2                                                                                                                   termadmin@t3                                                                                                                   termadmin@t4                                                                                                                   termadmin@t5                                                                                                                   termadmin@t6                                                                                                                   termadmin@t7                                                                                                                   termadmin@t8                                                                                                                   termadmin@t9                                                                                                                   termadmin@t10                                                                                                                  termadmin@t11                                                                                                                  termadmin@t12                                                                                                                  termadmin@t13                                                                                                                  termadmin@t14                                                                                                                  termadmin@t15                                                                                                                  termadmin@t16 
YAR ★★★★★
()
Ответ на: комментарий от Slavaz

Это понятно, что можно прочитать, нагородить цикл, и через практику придти. Но не дюже хочется ради одной задачи сиим заниматься. :)

Мужики пасибо! Очень интересные способы представили!

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

Вот Ваш способ очень интересен, я тупанул, и не уточнил, что наиболее интересным был-бы способ с регулярным выражением, ОГРОМНОЕ СПАСИБО. Интересненько так получилось!

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

а, завсегда пажалста! ;)
маны рулят!

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

И, кстати, -n можно убрать, тогда не будет «затягивать» приглашение консоли после последней надписи :)

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

кстати, echo -en termadmin@t{1..16}«\n^H» > /tmp/file
в файле получается мусор из бэкспейсов в начале каждой строки. если это потом куда-то надо в конфиги совать, будут проблемы с парсингом..

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

У меня тоже лишние пробелы... xterm. Способ который подсказал aol лучше. :)

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

Да, коряво выходит, подтверждаю!

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

да, он удобный, но это отдельная прога ;)
посмотри, там разное можно с ним ) дробные шаги итп...

aol ★★★★★
()
$ echo {1..16} | sed -r 's/([0-9]+) ?/termadmin@t&\n/g'
termadmin@t1 
termadmin@t2 
termadmin@t3 
termadmin@t4 
termadmin@t5 
termadmin@t6 
termadmin@t7 
termadmin@t8 
termadmin@t9 
termadmin@t10 
termadmin@t11 
termadmin@t12 
termadmin@t13 
termadmin@t14 
termadmin@t15 
termadmin@t16
drBatty ★★
()
Ответ на: комментарий от YAR

Или, как вариант - первую запись вынести за пределы скобок, т.е., echo -e text1 «\n"text{2..16}

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

Потому и и привел пример с поправкой.

Если имеется ввиду: echo -en termadmin@t{1..16}«\n^H» | cat -A

то «пиши еще».

anonymous
()
Ответ на: комментарий от YAR

Оооо, очень годно! printf это-ж вообще встроенное всё, и крутой какой однострочник тоже вышел! Работает 8-)

to aol: пасибо, не столь важно, что это отдельная от bash утилита, главное что она есть в UNIX. :)

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

Ну так вариант с echo тоже использует исключительно встроенные функции - просто жаль, что не нашел нормального варианта для удаления пробелов и/или пустой строки

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

Да, не вариант. Если б в баше была какая-то переменная, вроде IFS, только для разделения значений при раскрытии скобок - можно было бы легко сделать

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

Осиль тред до конца

Чтоб смотреть как ты потихоньку отмызываешься? У меня запаса фейспалма не хватит... Сразу видно - олимпиадник по меньшей мере всероссийского масштаба.

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

Я-то своего добился - написал простую команду на bash, выполняющую поставленную задачу, а ты даже не можешь осилить грамотно написать пост (не говоря уж о прочтении всего треда).

YAR ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.