Форум программистов, компьютерный форум, киберфорум
PowerShell
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 10.01.2017
Сообщений: 4
1

Фильтр Replace-Words, с помощью которого можно было бы менять слова внутри строк, идущих по конвейеру

17.11.2017, 13:16. Просмотров 436. Ответов 3
Метки нет (Все метки)


Народ очень нужна помощь. Не могу справиться с заданием.
Вот само задание:
Написать фильтр Replace-Words, с помощью которого можно было бы менять слова внутри строк, идущих по конвейеру. Пары слов для замены должны указываться в качестве параметров фильтра в формате "старое_слово=новое_слово". Например, следующий конвейер команд должен заменить в файле 1.txt все слова "Иван" на "Жан":

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Get-Content .\1.txt | Replace-Words Иван=Жан | Set-Content .\1.txt      
Вот что у меня получилось :
$file=Read-host "Введите файл"
$str=Read-host "старое_слово=новое_слово"
$b=$str.Length
for ($i=0; $i -$b; $i++){
    if ($str[$i] -ne "="){
        $del++
        } else {
        break}
}
$old=$str.Substring(0,$del)
$New=$str.Substring($del+1)
$NewFile=Get-Content .\$file | ForEach-Object {$_ -replace $Old, $New}
$NewFile > .\$file
Это работает но как его переделать что бы работало как в примере : Get-Content .\1.txt | Replace-Words Иван=Жан | Set-Content .\1.txt
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.11.2017, 13:16
Ответы с готовыми решениями:

Создать массив строк, чтобы их можно было менять в процессе работы программы
Как сделать массив из 5 строк, чтобы их можно было менять в процессе работы программы?

Как сделать так,чтобы количество строк и столбцов массива можно было менять через меню?
как сделать так,чтобы количество строк (n) и столбцов(m) массива можно было менять через меню?...

Возможно ли написать AUTOEXEC.BAT, с помощью которого можно было бы делать выбор между ОС MS-DOS и Windows?
Здраствуйте товарищи. У меня такой вопрос, Возможно ли написать Autoexec.bat, с помощью которого...

Как сделать так чтобы можно было менять путь к БД
OleDbConnection aConn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;" + @"Data...

3
772 / 421 / 137
Регистрация: 03.06.2009
Сообщений: 1,223
Записей в блоге: 4
17.11.2017, 17:51 2
HanzoHazashi,
PowerShell
1
2
3
4
5
6
7
8
9
filter Replace-Words 
{
    param([Parameter(Mandatory=$true,ValueFromPipeline=$True)][String]$text,
          [Parameter(Mandatory=$true)][ValidatePattern("^\w*\=\w*$")][String]$query)
          
          $WORDS=$query.split("=")
          $text=$text.replace($WORDS[0],$WORDS[1])
          return $text
}
Вот вам готовый вариант
Запускать вот так
PowerShell
1
Get-Content .\1.txt | Replace-Words -query Иван=Жан | Set-Content .\2.txt
0
3379 / 1401 / 238
Регистрация: 10.12.2013
Сообщений: 4,823
20.11.2017, 15:04 3
v_svitere,

[ValidatePattern("^\w*\=\w*$")][String]$query


а что, после ValidatePattern нет никакого способа извлечь результат при успехе ?
0
772 / 421 / 137
Регистрация: 03.06.2009
Сообщений: 1,223
Записей в блоге: 4
20.11.2017, 15:30 4
volodin661,
а что, после ValidatePattern нет никакого способа извлечь результат при успехе ?
Это надо почитать документацию about_functions_advanced_parameters
Я собственно, и про ValidatePattern, то недавно узнал, обычно переданные параметры в теле функции обрабатывал.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.11.2017, 15:30

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Нарисовать лицо, чтобы можно было менять наклон бровей, улыбку
Помогите пожалуйста написать в vba лица Чернова. Если есть возможность, то с заполненными данными...

С fastscript задать код, чтобы можно было менять значения в БД Access
как с fastscript задать код чтобы можно было менять значения в базе данных в Access и выводило в...

Экспорт из фотошопа SVG, чтобы можно было менять цвет через Fill
Здравствуйте. Проблема вот в чём, при экспорте svg из фотошопа файл имеет вид: <svg...

Вывести палитру на форму так, чтобы можно было менять цвет объектов, нарисованных в PictureBox
Итак, товарищи! Подскажите пожалуйста как вывести палитру на форму так, чтобы можно было менять...

Как изменить переменную при клике на кнопку и чтобы эта переменная можно было менять во всех сценах
Как изменить переменную при клике на кнопку и чтобы эта переменная можно было менять во всех...

Как в edit ввести функцию одной переменной так что бы её можно было менять без повторной компиляции
Как в edit ввести функцию одной переменной (с клавиатуры) что бы её можно было менять без повторной...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.