【问题标题】:How to replace multiple blank spaces with tab on a mac如何在mac上用制表符替换多个空格
【发布时间】:2016-06-23 07:58:53
【问题描述】:

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

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

我无法找到一个等同于 \n 换行符的 mac 命令。

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

string1  string2
string1 <tab> string2

我用过

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

这可行,但很痛苦,因为我需要知道连续空格的确切数量,并且我需要执行 control+v 制表符处理。

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

string1
string2

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

提前感谢您的帮助。

【问题讨论】:

    标签: macos command-line sed


    【解决方案1】:

    匹配多个空格:

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

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

    在 OS X 上添加换行符:

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

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

    【讨论】:

    • 您好,非常感谢您关注 OSX 变通方法的必要性!不过我修改了我的代码,因为我无法让带有新行的 sed 工作,而且我对 echo 有点不熟悉。
    • @amwalker 不客气,但我认为您最好添加评论以详细说明您的修改。您也可以根据自己的问题给出答案。
    【解决方案2】:

    你可以这样做:

    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
    

    【讨论】:

    • sed:非法选项 --r 用法:sed script [-Ealn] [-i extension] [file ...] sed [-Ealn] [-i extension] [-e script]。 .. [-f script_file] ... [文件...]
    • 得到同样的错误(sed: 非法选项 -- r 用法)因为在 OSX 上它应该是 -e 而不是 -r
    【解决方案3】:

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

    无论如何,我可以向您推荐tr吗?它转写、压缩或删除字符。所以,第一个用法是音译——把“p”改成“d”,把“t”改成“g”

    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'
    

    【讨论】:

    • 您好,我这样做的原因是基于我需要脚本的练习,这些脚本旨在帮助批判性思维和开发数据分析协议。简而言之,我需要知道如何做到这两点。感谢音译复习,但是这个特定的答案没有用,因为正如我上面所说, \t 或 \n 命令在 OSX 中都不起作用。不过感谢您的意见。
    • 它们在 OSX 上都可以正常工作——这就是我测试它们的地方。
    猜你喜欢
    • 1970-01-01
    • 2011-09-15
    • 2011-08-14
    • 1970-01-01
    • 2021-08-24
    • 2020-03-11
    • 2017-06-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多