我正在编写一个脚本,要求我在列出期间在文件名中替换_
之前的单词。详情如下。
示例输入:
2017.12.01_07
2017.12.01_07
2017.12.01_06
2017.12.01_06
2017.12.01_05
2017.12.01_06
2017.12.01_05
2017.12.01_06
2017.12.01_08
我希望将_
之前的当前日期替换为1周的日期
我想替换的日期: - DATE_SEC=$(date -d '7 day ago' +'%Y.%m.%d').
预期产出:
2017.12.01_08 should change to 2017.11.24_08
此致
的Dinesh
答案 0 :(得分:0)
GNU sed
解决方案:
sed -En 's/\./-/g; s/^([^_]+)(_.*)/date -d"\1 + 1 week ago" +%Y.%m.%d\2/ep' file
输出:
2017.11.24_07
2017.11.24_07
2017.11.24_06
2017.11.24_06
2017.11.24_05
2017.11.24_06
2017.11.24_05
2017.11.24_06
2017.11.24_08
e
- 此命令允许用户将shell命令的输入传输到模式空间。如果进行了替换,则执行在模式空间中找到的命令,并将模式空间替换为其输出p
- 如果进行了替换,则打印新的模式空间答案 1 :(得分:0)
希望这能完成你的工作,
ls | awk -F'_' -v var=$(date -d '7 day ago' +'%Y.%m.%d') '{print var_$2}'
说明:
ls
-->
我在这里使用了文件列表选项,如果需要,我们可以更改来自其他来源,例如文件FileList.txt
。然后我们可以使用cat FileList.txt
|
-->
将 ls 的输出重定向到 awk
-F
-->
设置awk
-v var=
-->
定义了可在awk print
$2
-->
打印出分隔的第二个字段
答案 2 :(得分:0)
contoso.sharepoint.com,123,145
解决方案:
contoso.sharepoint.com,fffdf23f-1234-1234-a744-17e2e196e777,1481eca1-4567-4567-8dbc-60c666ab3b8c
输出:
Bash