awk分割问题

发布于 2024-10-14 05:32:09 字数 301 浏览 3 评论 0原文

我编写了一个小脚本,使用 awk 'split' 命令来获取当前目录名称。

echo $PWD

我需要将“8”替换为拆分操作结果的令牌数量。 // 如果 PWD = /home/用户名/bin.我正在尝试将“bin”放入包中。

package="`echo $PWD | awk '{split($0,a,"/"); print a[8] }'`" 
echo $package 

您能否告诉我用什么来代替“print a[8]”才能使脚本适用于任何目录路径?

-萨钦

I wrote a small script, using awk 'split' command to get the current directory name.

echo $PWD

I need to replace '8' with the number of tokens as a result of the split operation.
// If PWD = /home/username/bin. I am trying to get "bin" into package.

package="`echo $PWD | awk '{split($0,a,"/"); print a[8] }'`" 
echo $package 

Can you please tell me what do I substitute in place of 'print a[8]' to get the script working for any directory path ?

-Sachin

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

红ご颜醉 2024-10-21 05:32:09

你不需要 awk。如果您总是想要路径中的最后一个目录,只需执行以下操作:

#!/bin/sh

cur_dir="${PWD##*/}/"
echo "$cur_dir"

上面的命令还有一个额外的好处,即不为外部二进制文件创建任何子 shell 和/或分支。这都是原生 POSIX shell 语法。

You don't need awk for that. If you always want the last dir in a path just do:

#!/bin/sh

cur_dir="${PWD##*/}/"
echo "$cur_dir"

The above has the added benefit of not creating any subshells and/or forks to external binaries. It's all native POSIX shell syntax.

浮生面具三千个 2024-10-21 05:32:09

您可以使用 print a[length(a)] 但最好避免拆分并使用自定义字段分隔符和 $NF

echo $PWD | awk -F/ '{print $NF}'

但在这种特定情况下,您应该使用 <代码>基本名称:

basename "$PWD"

You could use print a[length(a)] but it's better to avoid splitting and use custom fields separator and $NF:

echo $PWD | awk -F/ '{print $NF}'

But in that specific case you should rather use basename:

basename "$PWD"
小猫一只 2024-10-21 05:32:09

其他答案是执行您想要完成的功能的更好替代品。但是,这是您问题的具体答案:

package=$(echo $PWD | awk '{n = split($0,a,"/"); print a[n] }')
echo "$package"

split() 返回结果元素的数量。

The other answers are better replacements to perform the function you're trying to accomplish. However, here is the specific answer to your question:

package=$(echo $PWD | awk '{n = split($0,a,"/"); print a[n] }')
echo "$package"

split() returns the number of resulting elements.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文