Linux Grep使用帮助

Linux Grep使用帮助,linux,grep,header,Linux,Grep,Header,我想使用grep来查找语料库中的所有标题,我想找到:之前的所有内容,然后忽略之后的所有内容。有人知道怎么做吗?(我可以得到完整的代码行吗)使用sed或awk 例如: sed -e '/^[^:]*$/d' -e 's/\(.*\):.*/\1/' filename 使用sed或awk 例如: sed -e '/^[^:]*$/d' -e 's/\(.*\):.*/\1/' filename 如果您只想显示匹配行的第一部分,那么您可以说 grep your_pattern | cut -d:

我想使用grep来查找语料库中的所有标题,我想找到:之前的所有内容,然后忽略之后的所有内容。有人知道怎么做吗?(我可以得到完整的代码行吗)

使用sed或awk

例如:

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

例如:

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

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

grep your_pattern | cut -d: -f 1
但如果您不想与冒号后面的数据匹配,则需要另一种工具。有许多可用的工具
sed
awk
perl
python
,等等。例如,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";
    }
}
#/usr/bin/perl
严格使用;
使用警告;
while(我的$line=){
my$substring=split/:/,$line;
如果($substring=~/your\u pattern/){
打印“$substring\n”;
}
}

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

grep your_pattern | cut -d: -f 1
但如果您不想与冒号后面的数据匹配,则需要另一种工具。有许多可用的工具
sed
awk
perl
python
,等等。例如,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";
    }
}
#/usr/bin/perl
严格使用;
使用警告;
while(我的$line=){
my$substring=split/:/,$line;
如果($substring=~/your\u pattern/){
打印“$substring\n”;
}
}
(我不确定我是否完全理解您的问题)

您必须使用“grep”和“cut”,一种解决方案(尽管还远远不够完美)是:

$cat文件| grep':'cut-f1-d':'

(我不确定我是否完全理解您的问题)

您必须使用“grep”和“cut”,一种解决方案(尽管还远远不够完美)是:


$cat文件| grep':'| cut-f1-d':'

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

这将在处理完所有标头后停止

编辑:稍微改进的版本:


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

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

这将在处理完所有标头后停止

编辑:稍微改进的版本:


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

您能提供一个输入和所需输出的示例吗?输入是一个带有长标题的垃圾邮件列表,输出是一个文件,标题高达:like Cc:或to:将在我到达立方体时发布我所拥有的内容这是我所拥有的grep-h“^[a-zA-Z]*:”*| sort-u>headers.txtlist=
echo*
用于$list中的文件;做x=
egrep-n-m1“^$”$file | sed/:/”
;head--lines=$x$file | egrep-0“^[a-zA-Z]*:“| sort-u>$file.header你能提供一个输入和所需输出的示例吗?输入是一个带有长标题的垃圾邮件列表,输出是一个标题高达:like Cc:或:to:的文件,当我到达立方体时将发布我所拥有的内容这是我所拥有的grep-h”^[a-zA-Z]*:”*| sort-u>headers.txtlist=
echo*
用于$list中的文件;做x=
egrep-n-m1“^$”$file | sed/:/”
;head--line=$x$file | egrep-0“^[a-zA-Z]*:“| sort-u>$file.header