我在分号分隔的CSV文件中设置了以下数据:
"11-01-2017";"17:13";"X";"";...
"11-01-2017";"";"X";"17:32";...
"11-01-2017";"20:13";"Y";"";...
"11-01-2017";"";"Y";"20:25";...
如何在bash中将第二列中的每个条目向下移动1,从而产生:
"11-01-2017";"";"X";"";...
"11-01-2017";"17:13";"X";"17:32";...
"11-01-2017";"";"Y";"";...
"11-01-2017";"20:13";"Y";"20:25";...
在这种情况下,必须在条目周围留下双引号。
答案 0 :(得分:4)
您可以将awk与这样的脚本一起使用:
<强> script.awk 强>
BEGIN { FS = ";"
OFS= FS
prev2 ="\"\""
}
{ tmp = $2; $2 = prev2; prev2 = tmp }
1
运行方式如下:awk -f script.awk yourfile
。
;
1
是打印当前值的简写