Dav*_*.it 1 linux bash awk grep
我需要Linux上的bash帮助;我需要找到执行以下操作的命令。
我有一个文件,其中的字段由|分隔。符号,并且我必须选择在该符号出现51次之后和下一个出现之前出现的值。
如果将此bash命令应用于以下文件,则将仅返回/选择值0.02468
文件样本:
AB=0.543;AC=1;AF=0.5;AN=1;BaseQRankSum=-8.244;DB;DP=178;DS;Dels=0;FS=0.568;GC=36;HRun=0;HaplotypeScore=3.5479;MQ=59.09;MQ0=0;MQRankSum=-1.171;QD=12.69;ReadPosRankSum=-0.923;SB=-1203.97;SBD=0.83;VQSLUD=7.2941;culprit=MQRankSum;set=GGSKSNP;CSQ=C|missense_variant|MODERATE|SLC7A2|ENSG00000003487|Transcript|ENST00000001234|protein_coding|7/8||ENST00000001234.10:c.1223G>C|ENSP00000001234.10:p.Cys416Ser|1234|1234|123|C/S|tGt/tCt|rs1234567||1||SNV|HGNC|123456|YES|||CCDS12345.1|ENSP00000004531|P52569||UPI1234A123A4||Ensembl|G|G|||tolerated(0.41)|benign(0)|Pfam_domain:PF12345&hmmpanther:PTHR12345&hmmpanther:PTHR12345:SF242&TIGRFAM_domain:TIGR00906|||0.0613|0|0.0202|0.2421|0|0.0501|0.0006809|0.0003488|0.02468|
有人可以帮我这个bash命令吗?我试图在网上查找它,但找不到任何东西。
使用cut。很好,它用于“剪切”分度符之间的字符串。例如:
cut -d"|" -f52 <<EOF
AB=0.543;AC=1;AF=0.5;AN=1;BaseQRankSum=-8.244;DB;DP=178;DS;Dels=0;FS=0.568;GC=36;HRun=0;HaplotypeScore=3.5479;MQ=59.09;MQ0=0;MQRankSum=-1.171;QD=12.69;ReadPosRankSum=-0.923;SB=-1203.97;SBD=0.83;VQSLUD=7.2941;culprit=MQRankSum;set=GGSKSNP;CSQ=C|missense_variant|MODERATE|SLC7A2|ENSG00000003487|Transcript|ENST00000001234|protein_coding|7/8||ENST00000001234.10:c.1223G>C|ENSP00000001234.10:p.Cys416Ser|1234|1234|123|C/S|tGt/tCt|rs1234567||1||SNV|HGNC|123456|YES|||CCDS12345.1|ENSP00000004531|P52569||UPI1234A123A4||Ensembl|G|G|||tolerated(0.41)|benign(0)|Pfam_domain:PF12345&hmmpanther:PTHR12345&hmmpanther:PTHR12345:SF242&TIGRFAM_domain:TIGR00906|||0.0613|0|0.0202|0.2421|0|0.0501|0.0006809|0.0003488|0.02468|
EOF
Run Code Online (Sandbox Code Playgroud)
将输出预期的。
下面是解决此问题的其他一些常用命令。
我们可以使用awk:
awk -vFS="|" '{print $52}'
Run Code Online (Sandbox Code Playgroud)
我们可以将字符串读入数组并输出51值:
IFS="|" read -r -a arr
echo "${arr[51]}"
Run Code Online (Sandbox Code Playgroud)
我们可以使用read来省略前51个值,例如:
IFS="|" read -r _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ val _
echo "$val"
Run Code Online (Sandbox Code Playgroud)