我有这样的 CSV 文件:
name_var;type_var;
id;string;
dt_depot;string;
num_artc;string
我想删除第一个;
并替换最后一个,,
以便输出如下所示:
name_var type_var,
id string,
dt_depot string,
num_artc string
答案1
简单地用sed
替换:
$ sed 's/;$/,/; s/;/ /g' file
name_var type_var,
id string,
dt_depot string,
num_artc string
至于awk
解决方案,如果输入文件应该只包含 2 个填充列 - 您可以使用以下awk
表达式:
$ awk -F";" '{ if (NF==3) $2=$2","; print $1,$2 }' file
name_var type_var,
id string,
dt_depot string,
num_artc string
答案2
$ awk -F';' '{sub(/;$/,","); $1=$1} 1' file
name_var type_var,
id string,
dt_depot string,
num_artc string
该脚本更改;
行末尾的每个字符,然后通过向字段分配值来,
将剩余的每个字符转换为,这会导致所有输入字段分隔符(由 设置)更改为输出字段分隔符(默认情况下为空白)。然后,它通过指定调用默认操作 ( ) 的真条件 (1) 来打印当前行。;
,
;
-F';'
print $0
答案3
用awk
类似的东西可以完成这项工作:
awk -F\; '{print $1" "$2","}'
如果您不喜欢最后一个逗号,可以这样重写:
awk -F\; '{ if (NF != 2) print $1" "$2","; else print $1" "$2;}'
答案4
使用此命令:
awk '{sub(/;$/,",")sub(/;/," ")}1' file
你得到这个输出:
name_var type_var,
id string,
dt_depot string,
num_artc string