Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Разделение строки через n символ

Ответить
Настройки темы
PowerShell - [решено] Разделение строки через n символ

Аватара для ivan.vas

Новый участник


Сообщения: 27
Благодарности: 0

Профиль | Отправить PM | Цитировать


Добрый день.
Подскажите, возможно ли такое сделать на Powershell.
Есть текстовый файл с текстом разделенным (можно либо запятой либо точкой с запятой):
Код: Выделить весь код
a;b;c;d;e;f;g;a;b;c;d;e;f;g
Возможно ли, пройтись по этой строке, найти разделить номер 4 и сделать новую строку, к примеру вот так:
Код: Выделить весь код
a;b;c;d;
e;f;g;a;
b;c;d;e;
f;g;a;b;

Отправлено: 11:28, 14-10-2021

 

Ветеран


Сообщения: 1240
Благодарности: 542

Профиль | Отправить PM | Цитировать


если строка полноценная в смысле форматирования, то можно так:
Код: Выделить весь код
$line = 'a;b;c;d;e;f;g;a;b;c;d;e;f;g;a;b;'
[regex]::Matches($line,'([^;];){4}').Value
иначе надо понимать какой формат будет (бывает, может быть) у строки - делится ли она нацело на 4, имеет знак ";" в конце строки, чтобы понимать учитывать это или дописывать в строку (менять ее или нет) или делать расчеты предварительные.
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:06, 14-10-2021 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для ivan.vas

Новый участник


Сообщения: 27
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата alpap:
иначе надо понимать какой формат будет »
получается если строка имеет спецсимволы + отдельные знаки препинания, то нужно это тоже учитывать?

Отправлено: 14:53, 14-10-2021 | #3


Аватара для Fors1k

Старожил


Сообщения: 165
Благодарности: 96

Профиль | Отправить PM | Цитировать


Цитата ivan.vas:
строка имеет спецсимволы + отдельные знаки препинания »
Приведите пример.
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:36, 14-10-2021 | #4


Аватара для ivan.vas

Новый участник


Сообщения: 27
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Fors1k:
Приведите пример. »
Пример вот такой:
Код: Выделить весь код
111.44.77.99;qwe@wqe.wqe;123!@#$1*{];11.777.999.05;qwe-23@wqe@aa.ff;!Q@W#Er$t%Y^;
Разделение - ;

Отправлено: 17:00, 14-10-2021 | #5


Аватара для Fors1k

Старожил


Сообщения: 165
Благодарности: 96

Профиль | Отправить PM | Цитировать


ivan.vas, тут 6 кусков. В таком случае должно быть 4 и 2 ?
Добавил немного универсальности к варианту alpap:
Код: Выделить весь код
cls
$delimiter = ";"
$line = '111.44.77.99;qwe@wqe.wqe;123!@#$1*{];11.777.999.05;qwe-23@wqe@aa.ff;!Q@W#Er$t%Y^;'

[regex]::Matches($line, "([^\$delimiter]+\$delimiter`?){1,4}").Value 
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:18, 14-10-2021 | #6


Аватара для ivan.vas

Новый участник


Сообщения: 27
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Fors1k:
тут 6 кусков. »
Отвлекли, когда пример печатал.

Спасибо!

Отправлено: 17:34, 14-10-2021 | #7


Ветеран


Сообщения: 1240
Благодарности: 542

Профиль | Отправить PM | Цитировать


если брать приведенную вначале строку и не учитывать ничего, то можно так (получим то что получим)
Код: Выделить весь код
$line = 'a;b;c;d;e;f;g;a;b;c;d;e;f;g'
$line -Replace '([^;];){4}', "$&`r`n"
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:41, 14-10-2021 | #8


Аватара для YuS_2

Ветеран


Contributor


Сообщения: 848
Благодарности: 371

Профиль | Отправить PM | Цитировать


Цитата ivan.vas:
Пример вот такой:
Код: Выделить весь код
111.44.77.99;qwe@wqe.wqe;123!@#$1*{];11.777.999.05;qwe-23@wqe@aa.ff;!Q@W#Er$t%Y^;
Разделение - ; »
Код: Выделить весь код
$str = '111.44.77.99;qwe@wqe.wqe;123!@#$1*{];11.777.999.05;qwe-23@wqe@aa.ff;!Q@W#Er$t%Y^;'
$cnt=1;$str -split {if($_ -eq ";"){$global:cnt++%3 -eq 0}}
- делить строку будет по каждому третьему ";"

-------
scio me nihil scire. Ѫ

Это сообщение посчитали полезным следующие участники:

Отправлено: 22:30, 14-10-2021 | #9



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Разделение строки через n символ

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - добавить символ в конец каждой строки файла kuroi1984 Скриптовые языки администрирования Windows 2 04-07-2019 17:29
CMD/BAT - [решено] Удалить первый символ из строки Darkar25 Скриптовые языки администрирования Windows 4 06-04-2019 11:59
Любой язык - [решено] Добавить символ в строки WoW Скриптовые языки администрирования Windows 3 06-03-2013 13:22
Delphi - [решено] Pascal, разделение строки на число и символ paul_8 Программирование и базы данных 8 29-01-2013 13:41
Символ конца строки в PHP Pawel gor Вебмастеру 7 14-04-2004 20:16




 
Переход