基于我的单词的grep
数据是否可能不按输入文件的顺序排序?!
例如:假设这是我的输入文件: -
AAA
BBB
CCC
DDD
EEE
现在我想提取AAA,CCC,DDD,EEE
订购如下:
CCC
AAA
EEE
DDD
我尝试使用以下命令,但当然它不起作用: -
$ Grep -rhi "CCC\|AAA\|EEE\|DDD"
$ Grep -hi "CCC\|AAA\|EEE\|DDD" input
AAA
CCC
DDD
EEE
请记住,我想要提取的数据比上面的示例复杂得多,因为它中包含一些重定向/管道/引用字符,而且更多,我从几十个(可能是数百个)几乎具有完全相同行的前缀的文件中提取数据...
所以,关键在于NoWay可以使用像sort
或任何类似物这样的东西来按任意顺序对线进行排序。
请告诉我如果我应该发布任何其他信息 在此先感谢
答案 0 :(得分:0)
您可以尝试使用perl,解析输入字符串并将数据保存在数组中,然后解析输入文件并将每一行保存为哈希的键,现在您可以遍历数组并仅打印匹配哈希的行,如:
perl -e '
@input = split /\\\|/, shift;
open $fh, "<", shift;
while ( $line = <$fh> ) {
$line =~ s/\A\s+//; $line =~ s/\s+$//;
$file{ $line } = 1;
}
for $i ( @input ) {
if ( exists $file{ $i } ) { printf "%s\n", $i; };
}
' "CCC\|AAA\|EEE\|DDD" infile
它产生:
CCC
AAA
EEE
DDD