我想用grep来查找语料库中的所有标题,我想找到所有的东西:然后忽略所有的东西。有谁知道这是怎么做到的吗? (我可以获得完整的代码行)
答案 0 :(得分:3)
使用sed或awk。
一个例子:
sed -e '/^[^:]*$/d' -e 's/\(.*\):.*/\1/' filename
答案 1 :(得分:1)
如果您要做的只是显示匹配行的第一部分,那么您可以说
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";
}
}
答案 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;}'