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
.
我有一个这样的 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
.