csv文件中存在的行 例如
POC,1234567890,2345678901,2014-06-03 09:20:43,250
我想只更新日期列(第4列 - 日期时间)而不是更新csv文件的时间。但我的awk命令正在更新完整的第4列,时间被截断,我不想要,我该怎么办?
Awk Command
awk -F, 'NR>2 && NR<=1000{$4="2015-07-01";}1' OFS=, Input.csv> Output.csv
不应在output.csv文件中截断时间。(日期和时间用空格分隔)
输出应该是
POC,1234567890,2345678901,2015-07-01 09:20:43,250
注意 - 1.原始文件中的所有日期都不相同,但它们都需要转换为相同的新日期。 2.原始文件中的日期格式可以是任何格式(dd-M-yyyy / dd-MM-yyyy / dd-MMM-yy)
答案 0 :(得分:2)
@model IEnumerable<Person>
@foreach(var person in Model)
{
<a href="#" data-name="@person.Name" class="view-detail">View person</a>
}
<script src="~/scripts/bootbox.min.js"></script>
<script>
$(function(){
$('a.view-detail').on('click', function(e){
e.preventDefault(); // cancel the navigation event
var name = $(this).data('name');
bootbox.alert(name);
});
});
</script>
您并未真正指出原始日期中的所有日期是否相同,是否所有日期都需要转换为相同的新日期,但sub(/2014-06-03/, "2015-07-01", $4)
命令会执行基于正则表达式的替换。
原始文件中的所有日期都不相同,但它们都需要转换为相同的新日期。
因此正则表达式需要更复杂一些:
sub
如果不将其保留为2,您可以将第一个sub(/[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]/, "2015-07-01", $4)
更改为[0-9]
。您可以玩其他游戏(本月为[12]
等)。但有时简单就足够了。你没有验证旧日期;你正在替换它。
答案 1 :(得分:2)
以下是仅替换第4列中的日期组件的脚本。
awk -F, 'NR>2 && NR<=1000{sub(/[^[:space:]]*/,"2015-07-01",$4);}1' OFS=, Input.csv> Output.csv
答案 2 :(得分:0)
由于$4
具有固定值,因此这是一种快速且丑陋的方式:
awk 'NR>2 && NR<=1000{$4="2015-07-01";}1' FS="( |,)" OFS="," Input.csv |sed -e "s/-01,/-01 /" > Output.csv
我个人更喜欢Jonathan的流程。