请注意,我的文件包含以字符|
分隔的字段,第一列包含日期和小时2014-10-09/10:00:00.00
。这是文件:
2014-10-09/10:01:00.27| tha| 99| awfkj| kiuaj| oauhhg|
2014-10-09/10:02:49.00| okh| 69| azakj| wklkj| hjjhhg|
2014-10-09/10:15:30.06| hnt| 19| klkkj| kjhkj| okjhhg|
我想更改日期格式并将小时替换为“000000”,它必须是这样的:
09102014000000| tha| 99| awfkj| kiuaj| oauhhg|
09102014000000| okh| 69| azakj| wklkj| hjjhhg|
09102014000000| hnt| 19| klkkj| kjhkj| okjhhg|
我不知道我需要使用什么。比如这个?
awk '{ gsub("..", "..", $1) ; print }'
谢谢
答案 0 :(得分:3)
您可以通过sed,
执行此操作GNU sed,
$ sed -r 's~^([0-9]{4})-([0-9]{2})-([0-9]{2})[^\|]*~\3\2\1000000~' file
09102014000000| tha| 99| awfkj| kiuaj| oauhhg|
09102014000000| okh| 69| azakj| wklkj| hjjhhg|
09102014000000| hnt| 19| klkkj| kjhkj| okjhhg|
基本sed,
$ sed 's~^\([0-9]\{4\}\)-\([0-9]\{2\}\)-\([0-9]\{2\}\)[^\|]*~\3\2\1000000~' file
09102014000000| tha| 99| awfkj| kiuaj| oauhhg|
09102014000000| okh| 69| azakj| wklkj| hjjhhg|
09102014000000| hnt| 19| klkkj| kjhkj| okjhhg|
答案 1 :(得分:1)
sed 's/\([0-9]*\)-\([0-9]*\)-\([0-9]*\)[^|]*/\3\2\1000000/'
答案 2 :(得分:1)
试试这个:
sed 's/^\(....\)-\(..\)-\(..\)\/\(..:..:.....\)/\3\2\1000000/' input.txt
答案 3 :(得分:1)
由于这是关于处理日期,我会使用一个小的bash脚本并调用date
命令。这样,您可以根据需要进行调整,只需使用date
格式选项:
while IFS="|" read -r a b
do
a=$(date -d"${a%/*}" +"%d%m%Y")
echo "${a}000000| $b"
done < file
a=$(date -d"${a%/*}" +"%d%m%Y")
获取第一个文本块,从斜杠/
中移除并将其转换为格式为DDMMYYYY
的日期。
$ while IFS="|" read -r a b; do a=$(date -d"${a%/*}" +"%d%m%Y"); echo "${a}000000| $b"; done < file
09102014000000| tha| 99| awfkj| kiuaj| oauhhg|
09102014000000| okh| 69| azakj| wklkj| hjjhhg|
09102014000000| hnt| 19| klkkj| kjhkj| okjhhg|
答案 4 :(得分:0)
$ sed -r 's/(^[0-9]{4})-([0-9]{2})-([0-9]{2}).{13}/\3\2\1000000|/g'
09102014000000| tha| 99| awfkj| kiuaj| oauhhg|
09102014000000| okh| 69| azakj| wklkj| hjjhhg|
09102014000000| hnt| 19| klkkj| kjhkj| okjhhg|
答案 5 :(得分:0)
gawk
具体方式
awk '{a=gensub(/(.+)-(.+)-(.+)(\/.+)/,"\\3\\2\\1000000","g",$1);sub($1,a);print}' input.txt
输出:
09102014000000| tha| 99| awfkj| kiuaj| oauhhg|
09102014000000| okh| 69| azakj| wklkj| hjjhhg|
09102014000000| hnt| 19| klkkj| kjhkj| okjhhg|