【问题标题】:Remove strings after each first word in a text file删除文本文件中每个第一个单词后的字符串
【发布时间】:2009-10-20 11:10:58
【问题描述】:

文件 1:

hello   (OPTION1)   123456   123456   123456
world   (OPTION1)   123456   123456   123456
foo     (OPTION1)   123456   123456   123456
bar     (OPTION1)   123456   123456   123456

如何删除文本文件 File1 中每个第一个单词之后的每个字符串?

这可能会因 awk/sed/cat 而失败 - 但我无法弄清楚。我对通过这些实用程序进行编辑仍然不熟悉 - 也许其他人会从我的问题中受益。

第一个词不是预测性的(没有通配符),每个第一个词都是唯一的。

【问题讨论】:

    标签: unix sed awk cat


    【解决方案1】:

    awk 一个班轮:

    awk '{ print $1 }' < inputfile > outputfile
    

    sed 一个班轮:

    sed 's/^\([A-Za-z0-9]*\).*/\1/' < inputfile > outpufile
    

    【讨论】:

    • 两个命令都达到了结果,如下所示。 awk 似乎是一个非常有趣的实用程序。感谢 Igor 和 pavium 的宝贵时间,非常感谢!
    • 在任何一种情况下都不需要重定向输入文件。两个程序都接受文件名作为参数。
    【解决方案2】:

    为什么在使用 cut 命令后还要使用这些工具

    cut -f1 -d"\t" filename
    

    【讨论】:

    • 因为剪切只是剪切,没有别的。 awk 剪切、greps、seds 和 count 以及更多。
    • cut "做一件事,把它做好"。
    【解决方案3】:

    试试

    awk '{print $1}' filename > filename2
    

    【讨论】:

      【解决方案4】:

      您可以从第一个空格开始修剪所有内容:

      sed '\s.*$//' <File1
      

      【讨论】:

        【解决方案5】:

        或者只是为了好玩,你可以用 perl 来做

        perl -ne '@a=split;打印 "$a[0]\n"'

        【讨论】:

          【解决方案6】:

          删除分隔符后的所有内容:

          cut -f1 -d"\t" inputfile &gt; outputfile

          \t 可以根据您的具体情况替换为任何其他分隔符(例如,;)。

          【讨论】:

            猜你喜欢
            • 2017-05-01
            • 2021-12-11
            • 1970-01-01
            • 1970-01-01
            • 2011-12-10
            • 1970-01-01
            • 2017-04-15
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多