2013-11-14 27 views
0

我有一个像SED在一条线上

/test/something/test2/2013-10-12/file_123 
/test/123456/file_123 
/test/test2/test3/test4/something/2013/file_123 

我想将其更改为以下格式在Linux中

/test/something/test2/????-??-??/file_123 
/test/??????/file_123 
/test/test2/test3/test4/something/????/file_123 

我能做到这一点的Linux文件中有特殊字符替换数除了最后一个字符串使用sed?

回答

3
kent$ awk -F/ -v OFS='/' '{for(i=1;i<NF;i++)if($i~/[0-9][0-9]/)gsub(/[0-9]/,"?",$i);}7' file 
/test/something/test2/????-??-??/file_123 
/test/??????/file_123 
/test/test2/test3/test4/something/????/file_123 
+0

的N-1部分这是我期待的...写在.Thanks ... – disizjay

+0

我是新来的Linux ....请你解释一下OFS,NF,NR的使用情况,您GSUB在上面的命令中使用....这将是伟大的.. – disizjay

0

如果点仅仅是删除数据:

awk -F/ '{$(NF-1)="????"}1' OFS=/ file 
/test/something/test2/????/file_123 
/test/????/file_123 
/test/test2/test3/test4/something/????/file_123 
0
sed ": do 
s|[0-9]\([^/]*/[^/]*\)$|?\1| 
t do" YourFile 

更换任何数字路径