免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2120 | 回复: 5
打印 上一主题 下一主题

[文件目录] 请教shell中路径问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-12-07 11:22 |只看该作者 |倒序浏览
本帖最后由 liu-shaobo 于 2012-12-07 11:30 编辑

请教shell中路径的问题,我一个脚本想对比两个文件版本生成补丁,不过遇到一个问题,

文件有3层目录的,也有4层目录的,当执行脚本2时,y_old_file_path,y_new_file_path,y_as_file_path就会出现问题,脚本和文件如下,y开头的路径对应4层目录,如果放在一个脚本里面,不知道大家有什么好办法

ufile.log文件格式:
  1. file/0/2/v1.log file/1/2/v2.log
  2. file/0/2/22/v1.log file/1/2/25/v2.log
复制代码
脚本1
  1. #!/bin/bash

  2. old_file_path=$1/$2/$3
  3. new_file_path=$5/$6/$7
  4. as_file_path=path/$new_file_path

  5. if [ ! -d $as_file_path ]
  6.   then
  7.     mkdir -p $as_file_path
  8. fi

  9. y_old_file_path=$1/$2/$3/$4
  10. y_new_file_path=$6/$7/$8/$9
  11. y_as_file_path=path/$y_new_file_path

  12. if [ ! -d $y_as_file_path ]
  13.   then
  14.     mkdir -p $y_as_file_path
  15. fi

  16. if [ $# == 8 ]
  17.   then
  18.     diff -Nu $old_file_path/$4 $new_file_path/$8 > $as_file_path/$8.path
  19. else
  20.     diff -Nu $y_old_file_path/$5 $y_new_file_path/${10} > $y_as_file_path/${10}.path
  21. fi
复制代码
脚本2
  1. awk -F"[/ ]" '{print $1,$2,$3,$4,$5,$6,$7,$8,$9,$10}' ufile.log |while read line
  2. do
  3.         echo "${line}" |xargs 脚本1
  4. done
复制代码

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
2 [报告]
发表于 2012-12-07 12:42 |只看该作者
本帖最后由 waker 于 2012-12-07 12:42 编辑

print $(NF-9),$(NF-8),...,$(NF-1),$NF

论坛徽章:
0
3 [报告]
发表于 2012-12-07 13:53 |只看该作者
回复 2# waker


    没太明白这个用在哪里

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
4 [报告]
发表于 2012-12-07 13:54 |只看该作者
这儿 awk -F"[/ ]" '{print $1,$2,$3,$4,$5,$6,$7,$8,$9,$10}'

俺只是跳个大神,没跳中请不要介意

论坛徽章:
0
5 [报告]
发表于 2012-12-07 14:04 |只看该作者
本帖最后由 liu-shaobo 于 2012-12-07 14:15 编辑

回复 4# waker
  1.     awk -F"[/ ]" '{print $(NF-9),$(NF-8),$(NF-7),$(NF-6),$(NF-5),$(NF-4),$(NF-3),$(NF-2),$(NF-1),$NF}' ufile.log
复制代码
awk: (FILENAME=ufile.log FNR=1) fatal: attempt to access field -1

现在就是会多余生成其他目录和文件,我只想要下面这样
如果是文件内容是file/0/1/v1.log file/1/1/v2.log
就会生成path/file/1/1/v2.log.path

如果是文件内容是file/0/2/22/v1.log file/1/2/25/v2.log
就会生成path/file/1/2/25/v2.log.path

论坛徽章:
0
6 [报告]
发表于 2012-12-07 17:50 |只看该作者
将脚本1修改成这样就可以了
  1. if [ $# -eq 8 ]
  2.   then
  3.     mkdir -p /path/file/$6/$7
  4.     diff -Nu $1/$2/$3/$4 $5/$6/$7/$8 > /path/file/$6/$7/$8.path
  5. else
  6.     mkdir -p /path/file/$7/$8/$9
  7.     diff -Nu $1/$2/$3/$4/$5 $6/$7/$8/$9/${10} > /path/filek/$7/$8/$9/${10}.path
  8. fi
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP