【问题标题】:Bash Split a String with a Path in it [duplicate]Bash拆分带有路径的字符串[重复]
【发布时间】:2019-02-03 13:06:17
【问题描述】:

我有以下问题,我的文件“2018_08_18__Lysto BackUp.plist”如下所示:

/volume1/02_public/3rd_Party_Apps/SPK_SCRIPTS/SynoDSApps/webapp/
/volume1/02_public/3rd_Party_Apps/SPK_SCRIPTS/SynoDSApps/webapp/exit_codes/
/volume1/02_public/3rd_Party_Apps/SPK_SCRIPTS/SynoDSApps/webapp/exit_codes/code_FUNC
/volume1/02_public/3rd_Party_Apps/SPK_SCRIPTS/SynoDSApps/webapp/exit_codes/code_SCRI
/volume1/02_public/3rd_Party_Apps/SPK_SCRIPTS/SynoDSApps/webapp/login/
/volume1/02_public/3rd_Party_Apps/SPK_SCRIPTS/SynoDSApps/webapp/login/check_appprivilege.php
/volume1/02_public/3rd_Party_Apps/SPK_SCRIPTS/SynoDSApps/webapp/login/check_login.php
/volume1/02_public/3rd_Party_Apps/SPK_SCRIPTS/SynoDSApps/webapp/login/privilege.php
/volume1/02_public/3rd_Party_Apps/SPK_SCRIPTS/SynoDSApps/webapp/scripte/
/volume1/02_public/3rd_Party_Apps/SPK_SCRIPTS/SynoDSApps/webapp/scripte/Lysto BackUp/
/volume1/02_public/3rd_Party_Apps/SPK_SCRIPTS/SynoDSApps/webapp/scripte/Lysto BackUp/sys
/volume1/02_public/3rd_Party_Apps/SPK_SCRIPTS/SynoDSApps/webapp/scripte/Lysto BackUp/sys_func
/volume1/02_public/3rd_Party_Apps/SPK_SCRIPTS/SynoDSApps/SSH_ERROR

我用 for 循环读取文件,所以我得到了每一行:

mainDirectory

我需要这样的输出... 数 --> '6'

所以我需要一个想法来计算每一个 /*/

1 --> /volume1/
2 --> 02_public/
3 --> 3rd_Party_Apps/
4 --> SPK_SCRIPTS/
5 --> SynoDSApps/
6 --> webapp/

在这种情况下:

/volume1/02_public/3rd_Party_Apps/SPK_SCRIPTS/SynoDSApps/webapp/scripte/Lysto BackUp/sys_func

我只需要这个数 --> '8'

1 --> /volume1/
2 --> 02_public/
3 --> 3rd_Party_Apps/
4 --> SPK_SCRIPTS/
5 --> SynoDSApps/
6 --> webapp/
7 --> scripte/
8 --> Lysto BackUp/
not in the count result --> sys_func

我希望你们能帮助我解决我的问题.... 我从一周内开始寻找结果:(

【问题讨论】:

标签: string bash sed grep tr


【解决方案1】:

你可以通过awk得到这个:

echo "/volume1/02_public/3rd_Party_Apps/SPK_SCRIPTS/SynoDSApps/webapp/scripte/Lysto BackUp/sys_func" | awk -F"/" '{print NF-2}'

上面写着:

  1. 按字符拆分传入行/ (-F"/")
  2. 打印字段数 NF 减 2 ({print NF-2})。第一个 / 之前的空白和最后一个 / 之后的目录中的文件名的“减 2”

您还可以将一个文件传递给 awk 充满路径,并让它吐出一个带有计数或其他内容的新文件:

awk -F"/" '{print NF-2,$0}` 2018_08_18__Lysto BackUp.plist > outputfile

这将创建一个名为“outputfile”的新文件,其中包含您所追求的计数,后跟生成该计数的路径(例如)

【讨论】:

  • 你看 ^^它太棒了,我看了一个多星期的结果,5分钟后我得到了完美的答案^^:D
  • 我很高兴它成功了!如果你遇到很多这样的解析东西,那么学习 awk 是值得的。
  • 你能告诉我一个可以学习 awk 的网站吗?也许用德语^^对我来说更容易;)
  • 哈佛有一个很好的小页面解释了基础知识。一旦你掌握了基础知识,你就会进入花哨的东西,真正从中榨取价值。这是一个自 70 年代以来就一直存在的工具,因此如果您搜索它,就会有大量的文档。 hcs.harvard.edu/~dholland/computers/awk.html
猜你喜欢
  • 2017-05-31
  • 1970-01-01
  • 2017-08-16
  • 2015-11-06
  • 1970-01-01
  • 2021-10-09
  • 1970-01-01
  • 2013-01-15
  • 1970-01-01
相关资源
最近更新 更多