我正在尝试从具有元数据的文本文件中检索特定字段,如下所示:
project=XYZ; cell=ABC; strain=C3H; sex=F; age=PQR; treatment=None; id=MLN
Run Code Online (Sandbox Code Playgroud)
我有以下脚本来检索字段 'cell'
while read line
do
cell="$(echo $line | cut -d";" -f7 )"
echo $cell
fi
done < files.txt
Run Code Online (Sandbox Code Playgroud)
但是下面的脚本检索整个字段cell=ABC,而我只想要'ABC'字段中的值,如何在同一行代码中检索正则表达式之后的值?
我有 178 个扩展名为 _count 的文件,我想使用以文件名作为标题的粘贴命令,例如
File1_count
abc
def
gfh
Run Code Online (Sandbox Code Playgroud)
FILE2_count
ijk
lmn
opq
Run Code Online (Sandbox Code Playgroud)
FILE3_count
rst
uvw
xyz
Run Code Online (Sandbox Code Playgroud)
.... FILE178_count
123
456
789
Run Code Online (Sandbox Code Playgroud)
这样当我粘贴 *_count 时,我将使用粘贴命令获取标题为
FILE1 FILE2 FILE3 .... FILE178
abc ijk rst 123
def lmn uvw 456
gfh opq xyz 789
Run Code Online (Sandbox Code Playgroud) 我计算的平均分如下:
average_score=$(awk "BEGIN {printf \"%.2f\",${sum_of_score}/${number_of_lines}}")
Run Code Online (Sandbox Code Playgroud)
其中sum_of_scores按每个greped ID计算如下:
sum_of_score=$(grep 271712:E1 M10.6.txt | awk '{s+=$5} END {print s}')
number_of_lines=$(grep 271712:E1 M10.6.txt | awk 'END{print FNR}')
Run Code Online (Sandbox Code Playgroud)
但是有时sum_of_score和/或number_of_lines的值可能为零,因此我收到错误:
awk: BEGIN {printf "%.2f",/0}
awk: ^ unterminated regexp
awk: cmd. line:1: BEGIN {printf "%.2f",/0}
awk: cmd. line:1: ^ unexpected newline or end of string
Run Code Online (Sandbox Code Playgroud)
我该如何处理这个错误?
我正在执行以下命令来获取必须从其上方的行添加前缀的行,如下所示:
grep -B1 "^E[0-9]"
Run Code Online (Sandbox Code Playgroud)
我得到的东西如下:
ENSG00000165661:E5.1
E6.1
--
ENSG00000174776:E7.1
E8.1
--
ENSG00000122482:E7.2
E8.1
Run Code Online (Sandbox Code Playgroud)
如何为以E [字母数字]开头的行添加前缀,使文件成为
ENSG00000165661:E5.1
ENSG00000165661:E6.1
ENSG00000174776:E7.1
ENSG00000174776:E8.1
ENSG00000122482:E7.2
ENSG00000122482:E8.1
Run Code Online (Sandbox Code Playgroud)