【发布时间】:2012-11-19 17:44:19
【问题描述】:
我目前正在编写一个处理 csv 文件的脚本,并在此过程中更正它们的某些方面。如果需要,它所做的一件事是正确的时间格式。发生两种类型的转换:
xx:xx:xx to PTxxHxxMxxS
10:03:45 to PT10H03M45S
我已经能够使用以下方法(见下文)做到这一点,尽管我试图找出如何使用 sed 或 awk 来加快进程。除了实际的转换过程之外,我还想记录所做的更改(比如转换 4 次值,计数器将增加到 4),我可以使用 if 轻松完成下面的语句(虽然没有显示),虽然我不太了解使用 sed/awk 做这件事。
istimef=$( echo "$Sfcpp6" | grep ".*:.*:.*" )
if [ "$istimef" != "" ]; then
hs=$( echo "$Sfcpp6" | cut -d ':' -f 1 )
mn=$( echo "$Sfcpp6" | cut -d ':' -f 2 )
sc=$( echo "$Sfcpp6" | cut -d ':' -f 3 )
Sfcpp6=$( echo "PT"$hs"H"$mn"M"$sc"S" )
echo "$Sfcp6"
fi
它本质上检查时间值是否存在,然后执行转换。
【问题讨论】:
-
在此类问题中提供示例输入(至少几行)和输出是个好主意(即使这个问题很清楚)。
-
@LevLevitsky 哎呀,对不起,应该把例子做清楚
-
查找 bash 子字符串操作,它真的很方便 - 替换 echo | grep 使用:
${varname:0:2}${varname:2:2}${varname:5:2} -
@technosaurus 谢谢!必须检查一下,任何可以节省时间的东西哈哈