Како да grep за пребарување текст од PowerShell


grep е моќна алатка за пребарување текст на Linux, но не е достапна на Windows. Иако има порти и решенија од трети страни, PowerShell нуди вградени еквиваленти на grep кои ќе ја вршат истата работа во вашите скрипти.

Користење на findstr за grep Барај во PowerShell

Постојат неколку различни алатки за пребарување во PowerShell, секоја со свои предности. Наједноставниот е findstr, кој е изворно извршно Windows. Ова добро функционира за да го замени grep за едноставни операции за пребарување на командната линија. На пример, можете да го внесете излезот од ls до него за да најдете совпаѓања.

ls | findstr "foo"

Можете исто така да пребарувате повеќе зборови истовремено, да користите џокери за да се совпадне со било што и да го користите знамето /R  за да пренесувате основни регуларни изрази.

ls | findstr /R ba[a-z]\.txt

Иако, ако сакате експлицитно да пребарувате вклучително и празно место, ќе треба да го користите ознаката /C: :

ls | findstr /C:"foo"

Ако сте навикнати на командната линија на Linux и не сакате да запомните нова команда, можете да конфигурирате „grep“ да биде псевдоним на findstr, што ќе ви овозможи да ја задржите вашата мускулна меморија .

new-alias grep findstr

Користење на Select-String за grep пребарување во PowerShell

Другиот мајчин метод што го нуди PowerShell е Select-String cmdlet, кој прави многу исти работи како findstr, но е cmdlet на PowerShell наместо извршна датотека на Windows.

Ова значи дека ќе работи подобро во скриптите на PowerShell, а најмногу ќе го врати својот излез како објект, кој може убаво да се отпечати од PowerShell. Исто така е полесно да се користи на командната линија, бидејќи комплетирањето на јазичето на PowerShell ќе работи со него.

Работи исто како findstr и може да зема џокери и редовни изрази.

ls | Select-String foo
ls | Select-String -Pattern <regexPattern>

Можете да го користите Select-String за да грепувате текст во датотеките, со тоа што ќе го пренесете во аргумент -Path . Може да го користите и со внесување од други cmdlet како Get-Content.

Select-String -Path ".\foo.txt" -Pattern ba.*

Ако сакате да го користите во командната линија, можете исто така да го наречете „grep“ за брз пристап.

remove-alias grep
new-alias grep Select-String