从每行输入中剪切一个特定字符串,并在输出中显示为一列

时间:2016-02-24 09:10:00

标签: awk sed

我有一个巨大的制表符分隔文件格式:

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"的值。但在不同的栏目中。我想要关注" AC_SAS"的所有记录。使用每行的值,并输出为一列,如下所示:

AC_SAS=1  
AC_SAS=6  
AC_SAS=14  

4 个答案:

答案 0 :(得分:2)

您可以使用grep

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

此处,-o仅打印匹配的内容,>写入新文件(在本例中称为“ac_sas.txt”)。或者您可以省略> filename部分以打印到标准输出。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

你可以使用awk来完成这项工作,格式如下:

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

答案 3 :(得分:0)

这可能适合你(GNU sed):

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

用换行符替换空格,并以所需的字符串开头打印行。