2013-02-12 68 views
1

我试图找到并用“\ t”替换所有“^ A”字符,以便我可以将数据导入到mysql数据库中。 OSX上使用的命令是:SED查找和替换 - MapReduce文件

sed -i '' 's/^A/\t/' item_info_20130203 > item_info_20130203_tab 

这只是删除文件中的所有内容。我哪里错了?

回答

3

命令实际上应该是这样的:

sed 's/'`echo "\001"`'/\t/g' item_info_20130203 > item_info_20130203_tab 

或更现代的方式

sed 's/'$(echo "\001")'/\t/g' item_info_20130203 > item_info_20130203_tab 

或影响原始文件:如果您正在使用

sed -i 's/'`echo "\001"`'/\t/g' item_info_20130203 

GNU sed,你可以用这个:

sed -i 's/\x01/\t/g' item_info_20130203 
+0

它没有在这里工作。我需要添加-e arg来回显。所以命令是:sed's /'$(echo -e“\ 001”)'/ \ t/g'item_info_20130203 – 2014-07-10 20:55:32

0

根据this post,sed的-i选项查找/替换原始文件中的文本,因此命令末尾的语法> item_info_20120203_tab为NOP,因此输出文件为空。

+0

删除输出文件并重新运行后,原始文件仍然相同。 – Yogzzz 2013-02-12 20:36:11

+0

'-i'参数后面的单个字符空间也不应该在那里。我相信如果您想查找/替换该字节(而不是在正则表达式^ A上运行查找/替换),则必须将^ A表示为十六进制。 – ryanbwork 2013-02-12 20:43:06