URL: https://www.opennet.dev/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID15
Нить номер: 4426
[ Назад ]

Исходное сообщение
"Убрать перенос строки скриптом на bash"

Отправлено Seryoga2014 , 30-Май-18 18:15 
Есть текстовый файл, в котором в столбик перечислены IP-адреса. Необходимо все эти адреса представить в строчку. Но лучше чтобы в строчке было лишь по 10 адресов. Смотрел на bash-е, но что-то не нашёл как в цикле применять лишь к каждым 10 значениям удаление переноса строки.

Как сделать шаг в цикле? Что-то типа:
for (( i=0; i<=100; i += 10 )); do echo $i; done
но применительно к моей задаче? Какой там синтаксис? Или это вообще не так надо делать?


Содержание

Сообщения в этом обсуждении
"Убрать перенос строки скриптом на bash"
Отправлено Andrey Mitrofanov , 30-Май-18 19:00 
> Есть текстовый файл, в котором в столбик перечислены IP-адреса. Необходимо все эти
> адреса представить в строчку. Но лучше чтобы в строчке было лишь
> по 10 адресов. Смотрел на bash-е, но что-то не нашёл как
> в цикле применять лишь к каждым 10 значениям удаление переноса строки.

$ seq 25 |xargs -n 10
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25
$ _

> но применительно к моей задаче? Какой там синтаксис? Или это вообще не
> так надо делать?

Есть много способов...   ///...скальпировать?! ...лошадь!?


"Убрать перенос строки скриптом на bash"
Отправлено ыы , 30-Май-18 19:02 
> Есть текстовый файл, в котором в столбик перечислены IP-адреса. Необходимо все эти
> адреса представить в строчку. Но лучше чтобы в строчке было лишь
> по 10 адресов. Смотрел на bash-е, но что-то не нашёл как
> в цикле применять лишь к каждым 10 значениям удаление переноса строки.
> Как сделать шаг в цикле? Что-то типа:
> for (( i=0; i<=100; i += 10 )); do echo $i; done
> но применительно к моей задаче? Какой там синтаксис? Или это вообще не
> так надо делать?

убирать все переводы строки, а на каждом 10-м - ставить.


"Убрать перенос строки скриптом на bash"
Отправлено Andrey Mitrofanov , 30-Май-18 19:10 
> убирать все переводы строки, а на каждом 10-м - ставить.

Ну-у-у... в общем, ....

$ seq 25 |(i=0; while read l; do if let i=++i; then echo -n "$l"; else echo "$l";fi;done; let i && echo)
12345678910
11121314151617181920
2122232425
$ _


... да.


"Убрать перенос строки скриптом на bash"
Отправлено Seryoga2014 , 31-Май-18 10:10 
Не, для меня всё гораздо проще :)
cat file.txt | xargs -n 10
В файле IP-адреса
Спасибо :)



"Убрать перенос строки скриптом на bash"
Отправлено Seryoga2014 , 31-Май-18 10:47 
> cat file.txt | xargs -n 10

Только что-то я никак не соображу... )) мне надо в выводе этого перед каждой строчкой добавить фразу, допустим "word". Как это сделать? Вложенный цикл и им прикручивать echo "word"? Может как-то с помощью sed сделать замену? Ещё как-то?



"Убрать перенос строки скриптом на bash"
Отправлено Andrey Mitrofanov , 31-Май-18 12:30 
>> cat file.txt | xargs -n 10
> Только что-то я никак не соображу... )) мне надо в выводе этого

Тут bash бессилен.

> перед каждой строчкой добавить фразу, допустим "word". Как это сделать? Вложенный
> цикл и им прикручивать echo "word"? Может как-то с помощью sed
> сделать замену? Ещё как-то?

Много способов ободрать лошадь.

| xargs -n 10 echo word

| xargs -n 10 |sed 's/^/word /'

$ seq 25 |(i=0; while read l; do if let i=++i%10; then [ $i = 1 ] && echo -n word; echo -n "$l"; else echo "$l";fi;done; let i && echo)
word12345678910
word11121314151617181920
word2122232425
$ _


"Убрать перенос строки скриптом на bash"
Отправлено Seryoga2014 , 31-Май-18 13:22 
> | xargs -n 10 echo word
> | xargs -n 10 |sed 's/^/word /'

Блин, я ж вроде именно так и делал, но что-то не срослось.
Ещё раз спасибо. Может поумнею со временем )