Bash – How to Use Awk Scripts on the Path

awkbashpath

Is there a way to put little awk scriptoids on the path?

For example, I have this really useful collation operation:

// collate-csv.awk
FNR > 1 || NR == 1

And I can use it in all sorts of great ways:

xargs -a $(find * -name *.csv) awk -F',' -f collate-csv.awk | ...

The only problem is I don't have a way to call my awk tools from anywhere. With an executable shell script, I can drop it into a bin folder on the path. Is there a mechanism in linux where I can make these non-executable awk source files available from anywhere I go in the filesystem?

(with the qualification that the "mechanism" is not a "why don't you just hit it with a hammer"-style kludge)

Best Answer

In addition to @Roamia's answer you can use AWKPATH variable for a list of directory where to look for collate-csv.awk

AWKPATH=${HOME}/include/awk:/some/other/path
export AWKPATH
xargs -a $(find * -name *.csv) awk -f collate-csv.awk -F',' | ...

please note

  • .awk extension is not mandatory, just be consistent,
  • shebang line e.g. #!/usr/bin/awk -f is mandatory when script is used standalone as a script (no awk -f call),
  • you will have to use awk -f (and awk know how to use AWKPATH, bash don't)
Related Question