我正在使用我在互联网上找到的这个命令行在csv文件中添加一个新列:
awk '{print $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,F,$12,$13,$14,$15,$16}' FS=, OFS=, F='0' file.csv
所以问题是这行只在终端打印结果但是我想修改file.csv,这可能吗? 当我执行此命令行时,我得到的输出是:
原始CSV:
11;ALE;Augsburg;1;Jentzsch;Simon Jentzsch;35;28;28;28;0;2520;1;0;-41;t
11;ALE;Augsburg;2;Verhaegh;Paul Johannes Gerardus Verhaegh;28;26;26;25;0;2333;3;0;1;t
11;ALE;Augsburg;18;Callsen-Bracker;Jan-Ingwer Callsen-Bracker;27;30;25;24;5;2310;7;0;4;t
终端输出:
,,,,,,,,,,,0,,,,,;Jentzsch;Simon Jentzsch;35;28;28;28;0;2520;1;0;-41;t
,,,,,,,,,,,0,,,,,;Verhaegh;Paul Johannes Gerardus Verhaegh;28;26;26;25;0;2333;3;0;1;t
,,,,,,,,,,,0,,,,,8;Callsen-Bracker;Jan-Ingwer Callsen-Bracker;27;30;25;24;5;2310;7;0;4;t
很难解释,但我想要的是这样的:
11;ALE;Augsburg;1;Jentzsch;Simon Jentzsch;35;28;28;28;0;0;2520;1;0;-41;t
11;ALE;Augsburg;2;Verhaegh;Paul Johannes Gerardus Verhaegh;28;26;26;25;0;0;2333;3;0;1;t
11;ALE;Augsburg;18;Callsen-Bracker;Jan-Ingwer Callsen-Bracker;27;30;25;24;5;0;2310;7;0;4;t
因此,只需在原始第11列之后添加0作为新列。 提前谢谢!
答案 0 :(得分:2)
类似的东西,
$ awk -F";" -v OFS=";" '$11=$11OFS"0"' file
11;ALE;Augsburg;1;Jentzsch;Simon Jentzsch;35;28;28;28;0;0;2520;1;0;-41;t
11;ALE;Augsburg;2;Verhaegh;Paul Johannes Gerardus Verhaegh;28;26;26;25;0;0;2333;3;0;1;t
11;ALE;Augsburg;18;Callsen-Bracker;Jan-Ingwer Callsen-Bracker;27;30;25;24;5;0;2310;7;0;4;t
当我们从同一个文件中读取时,您将无法将输出重定向到文件,因此我们可以将其重定向到新文件并将新文件作为旧文件移动。
示例强>
$ awk -F";" -v OFS=";" '$11=$11OFS"0"' file > new_file && mv new_file file
修改强>
如果您使用的是awk版本4.1.0
或更高版本,则也可以使用-i
选项。
$ awk -i inplace -F";" -v OFS=";" '$11=$11OFS"0"{print}' file
将编辑文件。感谢@JamesBrown的链接。
答案 1 :(得分:0)
Node.connect :api@ip-10-0-19-179.eu-central-1.compute.internal
** (CompileError) iex:2: invalid call 179.eu()
(stdlib) lists.erl:1354: :lists.mapfoldl/3
(stdlib) lists.erl:1355: :lists.mapfoldl/3
(stdlib) lists.erl:1354: :lists.mapfoldl/3
只需将2改为11或其他......