Bash 拆分包含路径的字符串
Bash Split a String with a Path in it
我有以下问题,我的文件“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
我希望你们能帮我解决我的问题....
我从一个星期开始寻找结果:(
你可以通过 awk
:
echo "/volume1/02_public/3rd_Party_Apps/SPK_SCRIPTS/SynoDSApps/webapp/scripte/Lysto BackUp/sys_func" | awk -F"/" '{print NF-2}'
上面写着:
- 按字符拆分传入行
/
(-F"/"
)
- 打印字段数
NF
减 2 ({print NF-2}
)。 "minus 2"为第一个/
前的空白和最后一个/
后目录中的文件名
您还可以将文件传递给充满路径的 awk,并让它生成一个包含计数或其他内容的新文件:
awk -F"/" '{print NF-2,[=11=]}` 2018_08_18__Lysto BackUp.plist > outputfile
这将创建一个名为 "outputfile" 的新文件,其中包含您要查找的计数,后跟生成该计数的路径(作为示例)
我有以下问题,我的文件“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
我希望你们能帮我解决我的问题.... 我从一个星期开始寻找结果:(
你可以通过 awk
:
echo "/volume1/02_public/3rd_Party_Apps/SPK_SCRIPTS/SynoDSApps/webapp/scripte/Lysto BackUp/sys_func" | awk -F"/" '{print NF-2}'
上面写着:
- 按字符拆分传入行
/
(-F"/"
) - 打印字段数
NF
减 2 ({print NF-2}
)。 "minus 2"为第一个/
前的空白和最后一个/
后目录中的文件名
您还可以将文件传递给充满路径的 awk,并让它生成一个包含计数或其他内容的新文件:
awk -F"/" '{print NF-2,[=11=]}` 2018_08_18__Lysto BackUp.plist > outputfile
这将创建一个名为 "outputfile" 的新文件,其中包含您要查找的计数,后跟生成该计数的路径(作为示例)