Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations Chriss Miller on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Newbie question

Status
Not open for further replies.

GRTman

Programmer
Joined
Feb 3, 2024
Messages
2
Location
GB
I've downloaded gawk 3.1.6 and started using awk at the CMD prompt.

However I have a mysterious problem:

My input file tt.tx contains:
AAA,BBB
CCC,DDD
EEE,FFF

When I run this script it ignores the text "test". I cant work out why?

Correction:

C:\Users\md\Desktop>awk -F, "{nvar="test"; print $1 nvar $2}" tt.txt
AAABBB
CCCDDD
EEEFFF

 
Hi

That is CMD problem, not Awk problem. You need to fix your quoting :
Code:
[ ]       [gray]╭─pair─╮    ╭───────pair────────╮[/gray]
        [gray]▼      ▼    ▼                   ▼[/gray]
awk -F, [highlight palegoldenrod][green]"[/green]{nvar=[green]"[/green][/highlight]test[highlight palegoldenrod][green]"[/green]; print $1 nvar $2}[green]"[/green][/highlight] tt.txt

In Linux shell the solution is to enclose the Awk code in single quotes ( ' ), but as far as I know, that possibility does not exist in CMD. In which case your only solution is to escape all double quotes ( " ) inside the Awk code. I have some ancient memories about the escape character being the caret ( ^ ), but no idea whether is valid today and in your case :
Code:
awk -F, "{nvar=[red]^[/red]"test[red]^[/red]"; print $1 nvar $2}" tt.txt

Alternatively, especially if the code is longer and frequently needed, you can put it in a file :
Code:
[teal]{[/teal][navy]nvar[/navy][teal]=[/teal][i][green]"test"[/green][/i][teal];[/teal] [b]print[/b] [navy]$1[/navy] nvar [navy]$2[/navy][teal]}[/teal]
Code:
awk -F, -f GRTman.awk tt.txt

But if you choose this later alternative, better move the [tt]-F[/tt] option inside the script file, for consistency :
Code:
[b]BEGIN[/b] [teal]{[/teal]
    [navy]FS[/navy][teal]=[/teal][i][green]","[/green][/i]
[teal]}[/teal]

[teal]{[/teal]
    [navy]nvar[/navy][teal]=[/teal][i][green]"test"[/green][/i]
    [b]print[/b] [navy]$1[/navy] nvar [navy]$2[/navy]
[teal]}[/teal]
Code:
awk -f GRTman.awk tt.txt


Feherke.
feherke.github.io
 
Thanks! that solved my problem. Another solution I found is to put the awk parameters into a script file. Then it sems you dont have to worry what the CMD interface is doing.
 
Status
Not open for further replies.

Similar threads

Part and Inventory Search

Sponsor

Back
Top