2016-02-24 19 views
0

我有这种格式的一个巨大的制表符分隔的文件:剪切从输入和显示的每一行特定的字符串作为一列在输出

AN_NFE=6958  AC_SAS=1  AN_SAS=7704  AF=1.022e-05  
AC_OTH=0  AN_OTH=118  AC_SAS=6  AN_SAS=7360  
AN_NFE=2754  AC_OTH=0  AN_OTH=116  AC_SAS=14   

每一行包含“AC_SAS”,但在不同列中的值。我想,从各行其价值,并输出到grep “AC_SAS” 的所有记录作为一列,就像这样:

AC_SAS=1 
AC_SAS=6 
AC_SAS=14 

回答

2

您可以使用grep

grep -o -E 'AC_SAS=[0-9]+' huge_file.txt > ac_sas.txt 

这里,-o只打印匹配内容,并且>写入一个新文件(在这种情况下称为“ac_sas.txt”)。或者您可以省略> filename部件打印到标准输出。

+0

好,它的工作:) –

1
sed 's:^.*\(AC_SAS=[0-9]\+\).*:\1:' yourfile.txt 
+0

它也有效:) –

0

您可以使用awk来做好这项工作和格式如下,

awk '{for(i=1;i<=NF;i++){if($i~/^AC_SAS/){print $i}}}' filename 
0

这可能为你工作(GNU SED):

sed -r 's/\s+/\n/;/^AC_SAS/P;D' file 

一个换行符和打印替换空间以所需字符串开头的行。

相关问题