OSX 终端:如何向 csv 文件的每一行添加相同的项目?

OSX Terminal: how to add same item to each line of a csv file?

我有一个这样的 csv 文件:

120,256,300
36,255,12
etc...

我想在所有行中添加一个像'USA'这样的固定字符串以获得:

120,256,300,USA
36,255,12,USA
etc...

我该怎么做?

谢谢

您可以只使用 sed: cat <input-file> | sed 's/\(.*\)/, USA/'.

这里s是替换命令,它使用后面的字符作为正则表达式和替换之间的分隔符。对于正则表达式,转义括号用于创建捕获组,正则表达式 .* 捕获整行。对于替换,</code> 插入第一个捕获组,然后附加 <code>, USA 文本。

您可以使用以下方法就地执行替换:sed -i .bak 's/\(.*\)/, USA/' <input-file>

从文本处理的角度来看,CSV 文件在这种情况下是纯文本,您只想将 , USA 附加到每一行。

最简单(并且操作成本最低)的方法可能是:

sed -i '' 's/$/, USA/' file

它的作用是指示 sed 查找 行尾 $ 并将其“替换”为 , USA。由于 sed 是基于行的,所以这显然不会 trim 超出文件的新行。

-i '' 指示 sed 在不创建备份文件的情况下进行在线更改。

如果您想要备份,可以使用所需的扩展名代替 '',例如-i .bak.