有没有办法把小awk脚本放在路上?
例如,我有一个非常有用的排序操作:
// collate-csv.awk
FNR > 1 || NR == 1我可以用各种各样的方法:
xargs -a $(find * -name *.csv) awk -F',' -f collate-csv.awk | ...唯一的问题是我没有办法从任何地方调用我的awk工具。有了一个可执行的shell脚本,我可以将它放到路径上的bin文件夹中。在linux中是否有一种机制可以使这些不可执行的awk源文件在文件系统中的任何地方都可用?
(条件是“机制”不是“你为什么不直接用锤子敲它”“-style传说”)
发布于 2020-09-18 14:26:54
除了@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',' | ...请注意
.awk扩展不是强制性的,只是一致的,#!/usr/bin/awk -f是必需的(没有awk -f调用),awk -f (而awk知道如何使用AWKPATH,bash不知道)发布于 2020-09-18 13:46:54
创建可执行的awk脚本并将其添加到$PATH中
mkdir -p "$HOME/bin"
cat >"$HOME/bin/collate-csv <<'x'
#!/usr/bin/awk -f
#
# collate-csv.awk
#
NR == 1 { print }
FNR == 1 { next }
{print}
x
chmod a+x "$HOME/bin/collate-csv"
export PATH="$PATH:$HOME/bin"现在您可以像使用其他命令一样使用collate-csv
xargs -a $(find * -name *.csv) collate-csv -F',' | ...https://unix.stackexchange.com/questions/610056
复制相似问题