如何在shell脚本中更改文件中的日期格式?
我有一个文件,其中写入的日期格式为YYYY-MM-DD。我想编写一个shell脚本,将日期格式更改为DD/MM/YYYY。 这是我第一次尝试失败如何在shell脚本中更改文件中的日期格式?,shell,date,for-loop,sed,grep,Shell,Date,For Loop,Sed,Grep,我有一个文件,其中写入的日期格式为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
#!/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
#/bin/bash
NR=$(类别$1 | grep-o'[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]-“| cut-d'-'-f1,1 | wc-l)
对于((i=1;i您不需要为字符串的某些部分使用变量。如果您使用\(…\)
分组,Sed已经记住了匹配的某些部分
不能同时将/
用作文字和替换分隔符。请将文字斜杠反斜杠,或使用其他分隔符:
sed 's/\([0-9]\{4\}\)-\([0-9][0-9]\)-\([0-9][0-9]\)/\3\/\2\/\1/g'
或
但我不能逃过斜杠吗?@DenisNichita:可以,但我发现它可读性较差。检查更新。我如何逃过斜杠?@DenisNichita:对我有效。你使用的是什么操作系统,什么版本的sed?
sed 's=\([0-9]\{4\}\)-\([0-9][0-9]\)-\([0-9][0-9]\)=\3/\2/\1=g'