Search code examples
powershellack

How to escape double quotes and colon in ACK in PowerShell


I am using Ack version 2.04, in PowerShell. I want to search texts like "jsonClass":"Page" (quotes included) inside text files.

I can't seem to get the quoting and escaping correct.

ack -c --match '"jsonClass":"Page"'

It doesn't work in PowerShell. I guess ack's picking up the single quotes as well.

Escaping the double quotes gives an invalid regex error:

ack -c --match "\"jsonClass\":\"Page\""
  Invalid regex '\':
  Trailing \ in regex m/\/ at C:\CHOCOL~1\lib\ACK2~1.04\content\ack.pl line 315

I tried the literal option as well, but I think ack's interpreting the colon as file parameters.

ack -c -Q --match "jsonClass":"Page"
  ack.pl: :Page: No such file or directory

What am I missing?

I am using PowerShell v2.


Solution

  • If ack is a function it could happen that -c is interpreted by PowerShell. Can you test the following?

    ack '-c' '--match' '"jsonClass":"Page"'
    

    -c --match should be interpreted as --match is the value of parameter c in function ask.

    If it's an EXE file, try:

    ack -c --match '\"jsonClass\":\"Page\"'