Разное

Powershell перевод строки: Символ перевода каретки на новую строку – DenTNT.trmw.ru

01.06.2000

Содержание

about_Special_Characters


РАЗДЕЛ
	about_Special_Characters

КРАТКОЕ ОПИСАНИЕ
	Описание специальных символов, которые можно использовать, чтобы 
	определить, как Windows PowerShell интерпретирует следующий 
	символ в команде или параметре.


ПОЛНОЕ ОПИСАНИЕ
	Windows PowerShell поддерживает последовательности специальных 
	символов, служащие для обозначения символов, не входящих в стандартную 
	кодировку.
 

	Специальные символы Windows PowerShell начинаются с символа обратного 
	апострофа, также называемого грависом (ASCII 96).
 

	В Windows PowerShell распознаются следующие специальные символы:

		`0  Null
		`a  Предупреждение
		`b  Возврат курсора
		`f  Перевод страницы
		`n  Новая строка
		`r  Возврат каретки
		`t  Горизонтальная табуляция
		`v  Вертикальная табуляция


	Эти символы вводятся с учетом регистра. 


NULL (`0)
	Windows PowerShell распознает специальный символ null (`0) и 
	выводит его с кодом символа 0. Этот символ отображается в Windows 
	PowerShell как пробел. С помощью этого символа Windows PowerShell 
	можно использовать для чтения и обработки текстовых файлов, в которых 
	используются символы null, например, индикаторы окончания строки или 
	записи. Специальный символ null не эквивалентен переменной $null, 
	которая хранит значение NULL.


ПРЕДУПРЕЖДЕНИЕ(`a)
	Специальный символ предупреждения (`a) отправляет звуковой сигнал 
	на динамик компьютера.
	Его можно использовать, чтобы предупредить пользователя о 
	выполнении какого-то действия. С помощью следующей команды на динамик 
	локального компьютера отправляется два звуковых сигнала:

		for ($i = 0; $i -le 1; $i++){"`a"}


ВОЗВРАТ КУРСОРА (`b)
	Специальный символ возврата курсора (`b) возвращает курсор на 
	один символ назад, но не удаляет никакие символы. Следующая 
	команда выводит слово backup, перемещает курсор назад на две позиции и 
	выводит слово out (перед которым идет пробел и которое начинается с новой 
	позиции):

		"backup`b`b out"


	Эта команда выводит следующий текст:

		back out


ПЕРЕВОД СТРАНИЦЫ(`f)
   Символ перевода страницы (`f) - команда печати, извлекающая 
   текущую страницу и продолжающая печать на следующей странице. Этот 
   символ влияет только на печать документов и не влияет на 
   отображение текста на экране.


НОВАЯ СТРОКА (`n)
	Символ новой строки (`n) вставляет разрыв строки сразу после символа.
 
	В следующем примере показывается, как нужно использовать символ 
	новой строки в команде Write-Host: 

		"Два разрыва строки `n`nздесь."
	

	Эта команда выводит следующий текст:

		Два разрыва строки

		здесь.


ВОЗВРАТ КАРЕТКИ (`r)
	Символ возврата каретки (`r) удаляет всю строку до символа `r, 
	как если бы предшествующий ему текст был на другой строке.

	Пример:

		Write-Host "Этот текст будет удален`rНе двигайтесь."

	В результате выполнения данной команды выводится следующий текст:

		Не двигайтесь.


ГОРИЗОНТАЛЬНАЯ ТАБУЛЯЦИЯ (`t)
	Символ горизонтальной табуляции(`t) переводит курсор на следующую 
	позицию табуляции, и вывод текста продолжается с этой позиции. По 
	умолчанию позиция табуляции в консоли Windows PowerShell 
	установлена на каждый восьмой пробел. 
	Например, с помощью следующей команды можно вставить две 
	табуляции между каждым столбцом. 

		"Column1`t`tColumn2`t`tColumn3"

	В результате выполнения данной команды выводится следующий текст:

		Column1		 Column2		 Column3


ВЕРТИКАЛЬНАЯ ТАБУЛЯЦИЯ (`v)
	Символ вертикальной табуляции(`v) переводит курсор на следующую 
	позицию вертикальной табуляции, и вывод текста продолжается с 
	этой позиции. Этот символ влияет только на печать документов. Он 
	не влияет на вывод текста на экран.


СМ. ТАКЖЕ
	about_Quoting_Rules 
	about_Escape_Characters
	





Функции по работе со строками в Powershell

Любой тип данных в Powershell может использовать методы объектов .NET. Каждый из этих методов можно использовать либо в виде команды, ключа или метода .Net. Узнать тип данных, у любого объекта Powershell, который находится в переменной можно через один из таких методов:


$a = 'Journey'
$a.GetType()

В колонке Name отображается тип строка. Со строками часто нужно переводить их в другой регистр, измерять длину, заменять символы.

Для примера переведем строку в верхний регистр:


'RegisTR'.ToLower()

Или обратная операция, которая переведет строку Powershell в верхний регистр:


'RegisTR'.ToUpper()

Можно проверить содержание символов в конце строки, которое вернет булевое значение True при положительном результате:


'Konec'.EndsWith('ec')

Или в начале:


'Konec'.StartsWith('Ko')

Обратите внимание, что регистр букв имеет значение:

Можно использовать несколько методов один за другим:


'Konec'.ToLower().StartsWith('ko')

Поиск подстроки в Powershell, тоже возвращает булевое значение:


'Один два три'.Contains('два')

Можно вернуть номер первого упомянутого символа — это называется индексом:


'Один два три'.IndexOf('и')

Или вернуть последний индекс последнего символа, так как в этой строке несколько букв ‘И’


'Один два три'.LastIndexOf('и')

По этим индексам можно получить срез подстроки в Powershell. В моем случае первый индекс — это знак пробела:


$first_index = 'Вырез срез slice'.IndexOf(' ')
'Вырез срез slice'.Substring($first_index)

Можно указать второй индекс, но нужно помнить, что после объявления первого индекса второй должен объявляться относительно первого:


'Вырез срез slice'.Substring(6,5)

Вставка новой строки по индексу:


'cрез'.Insert(0, 'Как делать ')

Измерение длины строки в Powershell:


'Длина строки'.Length

Метод replace в Powershell мы уже разбирали в виде ключа и регулярных значений. Это пример метода .NET. Как и методы выше тут важен регистр символов:


'Длина строки'.Replace('Длина', 'Замена')

Один из самых частых методов в Powershell это преобразование строки в массив. В моем случае разделитель пробел, но может быть любой другой:


'Логин пароль'.Split(' ')

 

Удаление пробелов в Powershell в начале и конце строки:


'    Удаление пробелов    '.Trim()

Теги: #powershell

Замена CRLF с помощью powershell

вы не указали версию, я предполагаю, что вы используете Powershell v3.

попробуйте это:

$path = "C:\Users\abc\Desktop\File\abc.txt"
(Get-Content $path -Raw).Replace("`r`n","`n") | Set-Content $path -Force

Примечание редактора: как указывает Майк z в комментариях,Set-Content добавляет завершающий CRLF, который нежелателен

. Проверьте с помощью:'hi' > t.txt; (Get-Content -Raw t.txt).Replace("`r`n","`n") | Set-Content t.txt; (Get-Content -Raw t.txt).EndsWith("`r`n"), который дает $True.

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

обновление

это может работать для v2 (извините, нигде не тестируется):

$in = "C:\Users\abc\Desktop\File\abc.txt"
$out = "C:\Users\abc\Desktop\File\abc-out.txt"
(Get-Content $in) -join "`n" > $out

Примечание редактора: обратите внимание, что это решение (сейчас) пишет к различные файл

и, следовательно, не эквивалентно (все еще ошибочному) решению v3. (Другой файл предназначен, чтобы избежать ловушки Ansgar Wiechers указывает в комментариях: использование > усекает конечный файл до исполнение начинается). Что еще более важно, хотя: это решение тоже добавляет завершающий CRLF, который нежелателен. Проверьте с помощью 'hi' > t.txt; (Get-Content t.txt) -join "`n" > t.NEW.txt; [io.file]::ReadAllText((Convert-Path t.NEW.txt)).endswith("`r`n"), который дает $True.

такое же резервирование о загрузке в память.

Добавить комментарий

Ваш адрес email не будет опубликован.