Сохранять в txt-файлах только строки, содержащие определенное слово / символ (Powershell) (командный файл Windows)

Я хочу оставить только те строки, которые содержат слово example и удалите все остальные строки.

Я думал, что это сработает, но это противоположно тому, что я пытаюсь сделать:

PowerShell -Command "gci *.txt | foreach { (cat $_.FullName | ? { $_ -notlike '*example*' }) | set-content $_.FullName}"

Я хочу получить команду, которая поворачивает это:

This line contains example.
This line does not.

В это:

This line contains example.

Кажется, это должно быть просто, но я не могу найти на него ответа. Найденные мной решения либо не сработали, либо работают наоборот, либо включают в себя множество других вещей, которые мне не нужны.

Ваше здоровье.

1 ответ
1

Текущая команда использует -notlike; это означает, что вам не нужны строки, в которых есть слово example что прямо противоположно тому, чего вы действительно хотите. Используйте вместо -like. Ваша команда будет:

PowerShell -Command "gci *.txt | foreach { (cat $_.FullName | ? { $_ -like '*example*' }) | set-content $_.FullName}"

  • Ваше здоровье. Я запустил его примерно на 2000 текстовых файлах. Если в txt-файле не было строки со строкой, он оставляет все строки в покое — когда он должен оставлять файл размером 0 КБ? Я тестировал это, намеренно добавляя строку в первую строку в таких файлах, а затем удаляя все остальные строки, оставляя только первую. Это немного странно, но я все еще могу обойти это и отсеять файлы со строкой в ​​любой строке (используя Agent Ransack для поиска) и получить только строки, содержащие строку.

    — bat_cmd
    15 часов назад

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *