我只是想解决这个问题。我正在运行下面的代码
awk -F, 'NR>1{gsub(/\:/,"",$4);gsub(/\-/,"",$4);gsub(/\.0/,"",$4);gsub(/\ /,",",$4);NF--}{$1=$1}1' OFS=, sample
$ cat示例
1,0,null,2014-11-24 08:15:18.0,1
1,0,null,2014-11-24 08:15:16.0,1
输出
1,0,null,2014-11-24 08:15:18.0,1
1,0,null,20141124,081516
我的预期输出:
1,0,null,20141124,081518,1
1,0,null,20141124,081516,1
任何可以帮我处理上述代码的人?
答案 0 :(得分:1)
你可能只需要
awk -F, '{gsub(/[-:]/,"",$4);sub(/ /,OFS,$4);sub(/\.0$/,"",$4)}1' OFS=, sample
答案 1 :(得分:0)
#!/usr/bin/awk -f
$1 {
gsub(/(\.0|[-:])/, "")
gsub(/ /, ",")
print
}
答案 2 :(得分:0)
您最好不要使用gsub
,而是最好使用split
。
awk '
BEGIN { FS = OFS = "," }
{
split ($4, flds, /[- :.]/);
$4 = flds[1] flds[2] flds[3] FS flds[4] flds[5] flds[6]
}1' sample
1,0,null,20141124,081518,1
1,0,null,20141124,081516,1
BEGIN
块中的输入和输出字段分隔符设置为,
。 split
,我们会在-
,:
,.
上打破第四个字段,并将其放入数组中。1
最后会执行默认awk
操作,即print
。 答案 3 :(得分:0)
$ awk 'BEGIN{FS=OFS=","} {gsub(/[-:]|\.0/,"",$4); sub(/ /,OFS,$4)} 1' file
1,0,null,20141124,081518,1
1,0,null,20141124,081516,1
或:
$ awk 'BEGIN{FS="[ ,]";OFS=","} {gsub(/-/,"",$4); gsub(/:|\.0/,"",$5)} 1' file
1,0,null,20141124,081518,1
1,0,null,20141124,081516,1