我正在寻找一种方法,用Linux命令或脚本替换文件中位置10和17之间的文本。例如,我想将日期文本20140101替换为01/01/2014。
我希望这可以在命令行的单个命令中使用sed或awk吗?
答案 0 :(得分:3)
使用sed
,您可以捕获将按原样放置的捕获组中的前9个字符。其余的将在3个捕获组中被打破,并根据您的需要重新安排。
类似的东西:
sed -r 's#(.{9})(.{4})(.{2})(.{2})#\1\3/\4/\2#' file
如果您使用的是没有GNU sed
转义( ) { }
\
的系统。
答案 1 :(得分:2)
如果所有字符串都是日期,那么最好使用date
命令:
$ date -d 20140101 +%m/%d/%Y
01/01/2014
$ date -d 20140923 +"%m-%d-%Y %a %b"
09-23-2014 Tue Sep
它是翻译许多日志文件中使用的1970年(unix epoch)秒数的特别好的工具:
$ date --date='@1411199063' +"%m-%d-%Y %H:%M:%S"
09-20-2014 07:44:23