Bash拆分了一个带有路径的字符串

时间:2018-08-28 20:19:17

标签: string bash sed grep tr

我有以下问题,我的文件'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

我希望你们能帮助我解决我的问题...。 自一个星期以来,我一直在寻找结果:(

1 个答案:

答案 0 :(得分:2)

您可以使用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”的新文件,该文件具有您要计算的计数,后跟生成该计数的路径(例如)