如何在Mac上用制表符替换多个空格



我正在尝试用fasta文件中的一个制表符替换空格,然后用新行替换这些制表符。事实证明,\t 和 在 mac 终端上不起作用。

我发现 \t 是 control+v 选项卡,这是在终端中键入的主要痛苦,不利于复制/粘贴脚本。

我找不到与换行符 等效的 mac 命令。

用制表符替换多个空格的预期结果:

string1  string2
string1 <tab> string2

我用过

sed 's/  /control+v <tab>/g <filename

这有效,但很痛苦,因为我需要知道连续空格的确切数量,并且我需要进行 control+v 选项卡处理。

要用新行替换每个选项卡以获得:

string1
string2

我已经尝试了使用 control+v return 的类似方法,但这并没有给出预期的结果。

提前感谢您的帮助。

要匹配多个空格:

echo "string string" | sed -e 's/  */$'t'/g'

注意:将空格加倍以匹配一个或多个空格。

要在 OS X 上添加换行符:

echo "string string" | sed -e 's/  */'$'n/g'

$'t'$'n'分别用于文本制表符和换行符。

你可以这样做:

cat File
string              string

用单个制表符替换连续空格:

sed -r 's/ +/t/g' File
string  string

要将制表符替换为换行符,请使用sed 's/t/n/g'

sed -r 's/ +/t/g' File | sed 's/t/n/g'
string
string

为什么要用制表符替换多个空格,然后用换行符替换制表符?为什么不直接用换行符替换多个空格?还是我错过了什么?

无论如何,我可以向您推荐tr吗?它可以翻译、压缩或删除字符。因此,第一个用法是音译 - 将"p"更改为"d",将"t"更改为"g"

echo pot | tr 'pt' 'dg'
dog

第二种用法是通过-s选项squeeze重复字符:

echo moooooo | tr -s 'o'
mo

最终用法是delete字符,通过-d

echo "minced" | tr -d "nd"
mice

因此,对于您的问题,您想挤压空格并替换为换行符

tr -s ' ' < fastfile | tr ' ' 'n'

最新更新