在Mac OS 10上使用sed替换文本文件中的制表符

Mac*_*nny 8 macos tabs sed special-characters

我已经在这里搜索了相当长的一段时间,虽然我发现了一些非常好的信息,但在我的问题上没有任何内容.Short-n-sweet,我在Mac OS 10.11上使用sed尝试用管道字符替换制表符.到目前为止我在此处找到的所有信息,语法可能适用于其他平台,但不适用于Mac OS 10.11.我知道sed适用于10.11,因为我可以整天替换普通的标准字符甚至像逗号一样标点符号.是的,我尝试过使用\t.我发现使用标准字符的sed字符串如下:

sed -i '' -e 's/,/|/g' /Users/username/Desktop/TABs2PIPE.txt
Run Code Online (Sandbox Code Playgroud)

当我用来\t代替,上面的字符串时,它只是替换t文件中的所有小写​​字母.

所以,任何其他Macheads谁已经让这个工作我真的很感激一些帮助,谢谢你提前.

zwo*_*wol 11

OSX sed是BSD衍生的;这个血统sed从未被接受\t为TAB字符IIRC的表示法。如果您的外壳是bash(这是OSX上的默认设置),请尝试以下操作:

sed -i '' -e $'s/\t/|/g' file_to_process.txt
Run Code Online (Sandbox Code Playgroud)

$'...'是bash扩展;它是带'...'引号的单词,但是C样式的反斜杠转义在其中解释。从bash手册页:

表格$'string'中的单词经过特殊处理。该单词扩展为 string,并按ANSI C标准的规定替换了反斜杠转义的字符。

因此,sed将看到-e s/ /|/g前两个空格之间的距离是一个文字TAB字符,它应该对此进行正确处理。

如果您的外壳不是 bash,则可以自己输入一个制表符,方法是先按Control-V再按TAB。