我正在尝试用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的类似方法,但这并没有给出预期的结果。
先谢谢你的帮助。
答案 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'