【发布时间】:2015-12-22 17:27:19
【问题描述】:
我的档案temp.txt
ID53,20150918,2015-09-19,,0,CENTER<br>
ID54,20150911,2015-09-14,,0,CENTER<br>
ID55,20150911,2015-09-14,,0,CENTER
我需要替换和转换第二个字段 (yyyymmdd) 几秒钟
我试了一下,只替换了第一行
awk -F"," '{ ("date -j -f ""%Y%m%d"" ""20150918"" ""+%s""") | getline $2; print }' OFS="," temp.txt
并试图喜欢这个
awk -F"," '{system("date -j -f ""%Y%m%d"" "$2" ""+%s""") | getline $2; print }' temp.txt
输出是:
1442619474
sh: 0: command not found
ID53,20150918,2015-09-19,,0,CENTER
1442014674
ID54,20150911,2015-09-14,,0,CENTER
1442014674
ID55,20150911,2015-09-14,,0,CENTER
使用gsub也不能
awk -F"," '{gsub($2,"system("date -j -f ""%Y%m%d"" "$2" ""+%s""")",$2); print}' OFS="," temp.txt
awk: syntax error at source line 1
context is
{gsub($2,"system("date -j -f ""%Y%m%d"" "$2" >>> ""+% <<< s""")",$2); print}
awk: illegal statement at source line 1
extra )
我需要这样的输出。怎么做?
ID53,1442619376,2015-09-19,,0,CENTER
ID54,1442014576,2015-09-14,,0,CENTER
ID55,1442014576,2015-09-14,,0,CENTER
【问题讨论】:
-
我想你有你的答案 [这里][1]。 [1]:stackoverflow.com/questions/20306217/…
-
@tstark81:唯一的问题是它被标记为osx,意思是Mac OS X,而Mac OS X 有BSD
awk,而不是GNUawk。 GNUawk为日期处理添加了一些强大的扩展(Timestamp to epoch in a CSV file withgawk可能涵盖了它们。不过,除非用户安装 GNUawk,否则它在 Mac OS X 上并没有多大帮助。 -
在previous answer of mine 中,我在具有默认awk 的mac 上使用了日期。它的格式不适合您的情况,但也许会对您有所帮助。