0

我在 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 实现这一点吗?

4

3 回答 3

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
于 2013-11-14T22:53:39.937 回答
0

如果只是为了删除数据:

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

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

于 2013-11-15T08:07:27.840 回答