Удалите все строки, которые не содержат «2020», через командный файл - PullRequest
2 голосов
/ 14 июля 2020

У меня есть сгенерированный текстовый файл. В этом файле есть некоторые строки, которые не имеют отношения к делу и должны быть исключены. Каждая строка, которую необходимо удалить, не содержит строки « 2020 ». Я хотел бы удалить эти строки, сохранив при этом все остальные строки.

поэтому текстовый файл выглядит следующим образом:

aaa2020
aaa2019
aaa2018
aaa2017

становится таким:

aaa2020

У меня есть попробовал

findstr /V "2019" infile.txt > outfile.txt

, однако это становится бесполезным, поскольку мне нужно будет использовать эту команду для каждой неправильной последовательности: (2019,2018,2017 ...)

Ответы [ 3 ]

2 голосов
/ 14 июля 2020

Поскольку ваш шаблон поиска не имеет особых требований, вы можете предпочесть утилиту . Откройте окно командной строки, введите help find, нажмите клавишу ENTER и прочтите информацию об использовании.

Используя эту информацию, вы можете использовать:

@find "2020" < "infile.txt" > "outfile.txt"

Или для абсолютной надежности:

@( ( "%__AppDir__%find.exe" "2020" ) 0< "X:\SomePathTo\infile.txt" ) 1> "Y:\SomeLocation\outfile.txt"

Это должно быть напрямую передано между или .

1 голос
/ 14 июля 2020

Просто используйте findstr без /V и перенаправьте вывод в другой файл:

findstr "2020" infile.txt>output.txt

см. findstr /? для получения более подробной информации об использовании команды. Особо сфокусируйтесь на строке:

/ V Печатает только строки, не содержащие совпадений.

Итак вы искали все, кроме "2019" и c. что было бы хорошо, если бы исключить только это. но у вас есть только одна вещь, которую нужно включить, поэтому лучше просто найдите критерии соответствия и выведите результаты.

0 голосов
/ 14 июля 2020

Это позволит найти только строки, содержащие '2020'.

powershell -NoLogo -NoProfile -Command ^
    "(Select-String '2020' 'C:\src\t\infile.txt').Line |" ^
        "Out-File 'C:\src\t\outfile.txt' ascii"

Если вы хотите получить их все одновременно, вы можете ...

powershell -NoLogo -NoProfile -Command ^
    "(Select-String '20(17|18|19|20)' 'C:\src\t\infile.txt').Line |" ^
        "Out-File 'C:\src\t\outfile.txt' ascii"
...