sed用特殊字符替换数字,除了行中的最后一个字符串

时间:2013-11-14 22:49:11

标签: linux bash shell sed awk

我在Linux中有一个像

的文件
/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

我可以使用sed实现这个目标吗?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

如果要点就是删除数据:

awk -F/ '{$(NF-1)="????"}1' OFS=/ file
/test/something/test2/????/file_123
/test/????/file_123
/test/test2/test3/test4/something/????/file_123

答案 2 :(得分:0)

sed ": do
s|[0-9]\([^/]*/[^/]*\)$|?\1|
t do" YourFile

替换路径的n-1部分中的任何数字