In an awk file, e.g example.awk, should the header be #!/bin/bash
or #!/bin/awk -f
?
The reason for my question is that if I try this command in the console I receive the correct file.txt with "line of text":
awk 'BEGIN {print "line of text"}' >> file.txt
but if i try execute the following file with ./example.awk:
#! /bin/awk -f
awk 'BEGIN {print "line of text"}' >> file.txt
it returns an error:
$ ./awk-usage.awk
awk: ./awk-usage.awk:3: awk 'BEGIN {print "line of text"}' >> file.txt
awk: ./awk-usage.awk:3: ^ invalid char ''' in expression
If I change the header to #!/bin/bash
or #!/bin/sh
it works.
What is my error? What is the reason of that?
Since you explicitly run the awk
command, you should use #!/bin/bash
. You can use #!/bin/awk
if you remove the awk
command and include only the awk
program (e.g. BEGIN {print "line of text"}
), but then you need to append to file
using awk syntax (print ... >> file
).
awk -f
takes a file containing the awk script, so that is completely wrong here.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With