【发布时间】:2018-12-16 02:21:47
【问题描述】:
我有这个 sed 声明:
#!/bin/bash
find . -type f ! -name 'checkData' ! -name 'correctData' ! -name 'makeStructure' -exec sed -i "1{s|.*|{}|;s|.*/testarea/||;s|/[^/]*$||;s/[/]/-/g;}" {} \;
目前它完全按照我的需要做,但没有以我想要的格式显示日期:
2000-01-18
它将日期返回为
.-2000-01-18
我一直在尝试找出需要更改的部分以摆脱 .- 但我运气不佳。
有没有办法只从结果中删除前 2 个字符?
提前致谢!
【问题讨论】:
-
原始字符串是什么样的?
-
基本上,这用于将本示例中名为“testarea”的父目录中每个文件的第一行从可能具有或不具有空值的日期更改为目录,因此例如,此文件位于 testarea/2000/01/18 中,因此将文件中的日期更改为 2000-01-18 尽管它在开头显示为 ./ 而我只是希望它全部更改为日期跨度>
-
拥有原始字符串将非常有帮助。在任何情况下,如果您的所有输出都以“.-”开头,您为什么不直接在 sed 脚本中用一个额外的命令杀死它呢?只需添加类似
s/^\.-// -
或者,如果你想在开头只剪切2个字符,任意两个字符,那么它将是
s/^..// -
第一段代码正是我所需要的,谢谢!