这应该真的很简单,但是由于某些原因它不起作用:
sed -i.bak -E 's/\t/ /' file.txt
不是替换制表符,而是替换t
字符。我已经尝试了所有可以想到的变体,使用引号等。我用Google搜索,发现其他所有人都使用非常相似的表达式,它们似乎很适合他们。
这-E
是OS X的东西。我以为失败可能是OS X的一些怪异的结果sed
,所以我也使用Ruby进行了尝试(不带-i
),并且得到了相同的结果:
ruby -pe '$_.gsub!(/\t/," ")' < file.txt > file.new
我在OS X和iTerm上使用的是Bash 3.2.51,尽管我看不到其中任何一个都非常相关。我没有设置任何奇怪的环境变量,尽管我可以发布您认为可能相关的任何变量。
有什么事吗
更新:我在尝试Ruby版本时肯定犯了其他错误或错字,因为Gilles指出它确实有效(而且我从来没有让他把我弄错!)。我不确定发生了什么,但是我很确定那一定是我的错误。
\t
在sed
with语句CTRL-V<TAB>
,其中<TAB>
是tab键和CTRL-V
是控制键和v
压在一起。