2

我最近一直在以编程方式处理一个大型数据文件(链接),并决定从终端运行一些 grep 命令以提取特定行并抽查我的程序是否正确处理数据。我执行此 grep 的文件是制表符分隔的,包含基因表达数据。每行包含一个基因名称,后跟几列数据。我在终端中执行了以下 grep 命令:

grep IRX3 rma_CCLE_Expression_Entrez_2012-10-18.res 

这里“IRX3”是一个基因名,rma_CCLE...是文件名。

此命令从文件中提取了正确的行,但删除了几个选项卡并删除了一些列(大约有 2000 列,下面仅显示 10 列):

IRX3 79191_at 10.27105 P 9.802959 P 9.155978 P 3.944805 A 10.86381 P 11.219 P 8.894276 P 9.498839 P 10.97627 P 5.493518 A 10.12431 P 5.596724 P 11.97915 P 5.626475 A 8.586957 P 8.188652 P 11.46542 P 8.968493 P 8.015925 P 7.050888 P 10.34178 P 8.417319 P 8.865884 P 8.221919 P 6.207358 P 11.76088 P 7.162497 P 9.491752 P 4.784088 A 8.938905 P 5.123149 A 11.85545 P 10.13062 P 9.163952 P 5.67286 P 6.959234 P 12.05033 P 8.826333 P 5.065222 A 4.791684 8.042779 P 10.33864 P 7.781193 P 8.982947 P 4.262702 A 8.10075 P 5.307268 A 8.95283 P 10.13345 P 10.00931 P 8.48634 P 9.159968 P 8.849957 P 4.47576.

注意粗体文本,这两个值之间应该有一个字母(“A”和“P”),与其他列的模式匹配。为什么 grep 会截断这些数据?我一直以为源数据的完整性是罪魁祸首,但是当我通过我编写的 Perl 脚本以编程方式迭代文件时,数据很好(即在两个指示值之间有一个字母)。

是什么赋予了?

4

1 回答 1

0

使用grep -P和你的 perl 正则表达式这是实验性的,顺便说 一下
你应该检查手册页
man grep

于 2013-10-12T01:01:39.707 回答