Grep用法帮助

时间:2009-07-02 13:38:31

标签: linux grep header

我想用grep来查找语料库中的所有标题,我想找到所有的东西:然后忽略所有的东西。有谁知道这是怎么做到的吗? (我可以获得完整的代码行)

4 个答案:

答案 0 :(得分:3)

使用sed或awk。

一个例子:

sed -e '/^[^:]*$/d' -e 's/\(.*\):.*/\1/' filename

答案 1 :(得分:1)

如果您要做的只是显示匹配行的第一部分,那么您可以说

grep your_pattern | cut -d: -f 1

但是如果你想在冒号后不匹配数据,你需要一个不同的工具。有许多可用的工具sedawkperlpython等。例如,Perl代码看起来像这样

perl -nle '($s) = split /:/; print $s if $s =~ /your_pattern/'

或更长的脚本版本:

#!/usr/bin/perl

use strict;
use warnings;

while (my $line = <>) {
    my $substring = split /:/, $line;
    if ($substring =~ /your_pattern/) {
        print "$substring\n";
    }
}

答案 2 :(得分:1)

(我不确定我完全理解你的问题)

你必须使用'grep'和'cut',一个解决方案(虽然远非完美)将是:

$ cat file | grep':'| cut -f 1 -d':'

答案 3 :(得分:0)

sed -n'/ ^ $ / q; /:/ {s /:.*/:/; p;}'

在处理完所有标题后,这将停止。

编辑:有点改进的版本:

sed -n'/ ^ $ / q; / ^ [^:\ t] {1,}:/ {s /:.*/:/; p;}'