Войти

Показать полную графическую версию : [решено] цикл для каждой строки из файла


rudimko
19-09-2012, 12:27
Возможно задам совсем глупый вопрос, но т.к. я только недавно начал изучать PS, у меня ничего не получается с ForEach-Object и прошу сильно не ругаться... ;)

Имеем файл test.txt в котором записан через строки текст (который может дополняться), допустим:
1
2
3

Нужно к каждой из них добавить переменную (которая уже существует) и вывести в отдельный файл.

Т.е. содержание файлов в итоге должно быть таким:
Содержание 1 файла: 1 + Переменная
Содержание 2 файла: 2 + Переменная
Содержание 3 файла: 3 + Переменная

Заранее спасибо.

Kazun
19-09-2012, 12:43
$var = "Привет"
gc test.txt | Foreach {"{0} : {1}" -f $_,$var} | out-file result.txt

rudimko
19-09-2012, 12:58
Отлично, работает. А как сделать вывод каждой строки в отдельные файлы?

Kazun
19-09-2012, 13:05
gc test.txt | Foreach {$i=0}{"{0} : {1}" -f $_,$var | out-file "num$(($i++))"}

rudimko
19-09-2012, 14:07
Спасибо. То что нужно. Последний вопрос на тему этого скрипта:
В переменной сохранено несколько значений - "1, 2, 3, 4", но вывод производится в виде 1 2 3 4 (без разделителя). Как поставить запятую между значениями переменной или любой другой разделитель при ее выводе?

Kazun
19-09-2012, 15:06
Установить значение переменной $OFS = ",",либо -join ","

alek2012
11-10-2012, 17:18
у меня задача вывести только те строки, которые повторяются в файле test.txt

можно как то реализовать?

спасибо

Kazun
11-10-2012, 17:30
gc test.txt| group | ? {$_.count -gt 1} | %{$_.Name}

alek2012
12-10-2012, 10:15
Все получилось, вывел еще в отдельный файл.

Еще одна задача, можно как то строчки с файла1 сравнить с файлом2 и вывести из файла2 только те строчки, которых нет в файле1

спасибище.

Kazun
12-10-2012, 10:34
Compare (gc 1.txt) (gc 2.txt) -Pass | Where {$_.SideIndicator -eq "=>"}

alek2012
12-10-2012, 11:49
Вывел почему то с повторами

мне нужно вывести из 2.txt только те значения строк, которых нет в 1.txt и все

мне вывело те которые есть, еще и с повторами

Kazun
12-10-2012, 12:13
PS > gc 1.txt
1
2
3
8
PS > gc 2.txt
1
2
3
4
5
PS > Compare (gc 1.txt) (gc 2.txt) -Pass | Where {$_.SideIndicator -eq "=>"}
4
5

alek2012
12-10-2012, 15:13
Все получилось, видимо что то неправильно набрал. Спасибище огромное!

alek2012
24-10-2012, 16:42
Еще один вопрос, как в файле удалит строки, которые повторяются?

Спасибо.

Kazun
24-10-2012, 17:02
Get-Content file.txt | Select-Object -Unique | Out-File result.txt

alek2012
25-10-2012, 09:46
Спасибо Kazun мего-огромное спасибище. Очень помог. PS только начал изучать. Я все что мне нужно объединил в одно)))




© OSzone.net 2001-2012