Linux Grep使用帮助
我想使用grep来查找语料库中的所有标题,我想找到:之前的所有内容,然后忽略之后的所有内容。有人知道怎么做吗?(我可以得到完整的代码行吗)使用sed或awk 例如: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:
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