我有一个文件,其中的日期格式为YYYY-MM-DD。我想编写一个shell脚本来将日期格式更改为DD / MM / YYYY。 这是我第一次尝试不起作用
#!/bin/bash
NR=$(cat $1 | grep -o '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]' | cut -d'-' -f 1,1 | wc -l)
for (( i=1; i<=$NR; ++i))
do
Y=$(cat $1 | grep -o '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]' | cut -d'-' -f 1,1 | head -1)
M=$(cat $1 | grep -o '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]' | cut -d'-' -f 2,2 | head -1)
D=$(cat $1 | grep -o '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]' | cut -d'-' -f 3,3 | head -1)
sed 's/[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]/"$D/$M/$Y"/' $1
done
我收到以下错误&#34; sed:-e表达式#1,字符51:对s&#39;&#39;&#34;
的未知选项答案 0 :(得分:0)
您不需要为部分字符串添加变量。如果您使用\(...\)
分组,则Sed已记住部分匹配。
您不能同时使用/
作为文字和替换分隔符。要么反斜杠文字斜杠,要么使用不同的分隔符:
sed 's/\([0-9]\{4\}\)-\([0-9][0-9]\)-\([0-9][0-9]\)/\3\/\2\/\1/g'
或
sed 's=\([0-9]\{4\}\)-\([0-9][0-9]\)-\([0-9][0-9]\)=\3/\2/\1=g'