首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >路径上的脚本?

路径上的脚本?
EN

Unix & Linux用户
提问于 2020-09-18 13:35:24
回答 2查看 605关注 0票数 3

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

例如,我有一个非常有用的排序操作:

代码语言:javascript
复制
// collate-csv.awk
FNR > 1 || NR == 1

我可以用各种各样的方法:

代码语言:javascript
复制
xargs -a $(find * -name *.csv) awk -F',' -f collate-csv.awk | ...

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

(条件是“机制”不是“你为什么不直接用锤子敲它”“-style传说”)

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2020-09-18 14:26:54

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

代码语言:javascript
复制
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不知道)
票数 5
EN

Unix & Linux用户

发布于 2020-09-18 13:46:54

创建可执行的awk脚本并将其添加到$PATH

代码语言:javascript
复制
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

代码语言:javascript
复制
xargs -a $(find * -name *.csv) collate-csv -F',' | ...
票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/610056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档