Awk:路径上的脚本?

Chr*_*ris 3 bash path awk

有没有awk办法在路径上放置小脚本?

例如,我有一个非常有用的整理操作:

// collate-csv.awk
FNR > 1 || NR == 1
Run Code Online (Sandbox Code Playgroud)

我可以以各种很棒的方式使用它:

xargs -a $(find * -name *.csv) awk -F',' -f collate-csv.awk | ...
Run Code Online (Sandbox Code Playgroud)

唯一的问题是我无法从任何地方调用我的 awk 工具。使用可执行的 shell 脚本,我可以将其放入路径上的 bin 文件夹中。linux 中是否有一种机制可以让awk我在文件系统中的任何地方都可以使用这些不可执行的源文件?

(有条件的是“机制”不是“你为什么不直接用锤子打它”式的kludge)

Arc*_*mar 5

除了@Roamia 的答案之外,您还可以使用AWKPATH变量作为要查找的目录列表collate-csv.awk

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

请注意

  • .awk 扩展不是强制性的,只要保持一致,
  • shebang line eg#!/usr/bin/awk -f是强制性的,当脚本作为脚本单独使用时(无awk -f调用),
  • 你将不得不使用awk -f(并且 awk 知道如何使用AWKPATH,bash 不知道)