如何使用mac上的标签替换多个空格

时间:2016-03-09 04:56:14

标签: macos command-line sed

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

我发现\ t是control + v tab,这在终端输入是一个很大的痛苦,不利于复制/粘贴脚本。

我找不到与\ n相同的mac命令换行。

使用标签替换多个空格所需的结果:

string1  string2
string1 <tab> string2

我用过

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

这有效,但是很痛苦,因为我需要知道连续空格的确切数量,我需要进行控制+ v标签处理。

用新行替换每个标签以获取:

string1
string2

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

先谢谢你的帮助。

3 个答案:

答案 0 :(得分:2)

匹配多个空格:

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

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

在OS X上添加换行符:

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

$'\t'$'\n'分别用于文字制表符和新行。

答案 1 :(得分:1)

你可以这样做:

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

答案 2 :(得分:1)

为什么用标签替换多个空格然后用换行符替换标签?为什么不用换行符替换多个空格?或者我错过了什么?

无论如何,我可以向您推荐tr吗?它可以音译,挤压或删除字符。因此,首先使用的是音译 - 更改&#39; p&#39;到了&#39; d&#39;并且&#39; t&#39;到了&#39;

echo pot | tr 'pt' 'dg'
dog

第二次使用squeeze重复字符,通过-s选项:

echo moooooo | tr -s 'o'
mo

最终用途为delete个字符,来自-d

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

所以,回答你的问题,你想挤压空格并用换行符替换

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