小编bio*_*ech的帖子

awk字段分隔符不适用于第一行

echo 'NODE_1_length_317516_cov_18.568_ID_4005' | awk 'FS="_length" {print $1}'
Run Code Online (Sandbox Code Playgroud)

获得的输出:

NODE_1_length_317516_cov_18.568_ID_4005
Run Code Online (Sandbox Code Playgroud)

预期产量:

NODE_1
Run Code Online (Sandbox Code Playgroud)

怎么可能?我错过了什么.

awk

7
推荐指数
1
解决办法
2956
查看次数

wget给出'ERROR 403:Forbidden'的替代方案

我正在尝试使用wget从多个Pubmed论文中获取文本,但似乎NCBI网站不允许这样做.任何替代品?

Bernardos-MacBook-Pro:pangenome_papers_pubmed_result bernardo$ wget -i ./url.txt
--2016-05-04 10:49:34--  http://www.ncbi.nlm.nih.gov/pmc/articles/PMC4560400/
Resolving www.ncbi.nlm.nih.gov... 130.14.29.110, 2607:f220:41e:4290::110
Connecting to www.ncbi.nlm.nih.gov|130.14.29.110|:80... connected.
HTTP request sent, awaiting response... 403 Forbidden
2016-05-04 10:49:34 ERROR 403: Forbidden.

--2016-05-04 10:49:34--  http://www.ncbi.nlm.nih.gov/pmc/articles/PMC4547177/
Reusing existing connection to www.ncbi.nlm.nih.gov:80.
HTTP request sent, awaiting response... 403 Forbidden
2016-05-04 10:49:34 ERROR 403: Forbidden.
Run Code Online (Sandbox Code Playgroud)

wget text-mining web-scraping

4
推荐指数
1
解决办法
1万
查看次数

如果找不到匹配,则按grep返回新行

如果grep找不到匹配项,我想修改此代码以返回空行:

while read vl ; do grep "^$vl" Table_S4.tab ; done < 1
Run Code Online (Sandbox Code Playgroud)

bash shell grep

3
推荐指数
1
解决办法
2546
查看次数

如果找不到grep,请打印破折号

如果找不到grep,我希望这个命令打印一个破折号(除了已经编码的新行):

while read vl ; do grep -w "$vl" APL_vs_HS.tab || printf "\n" ; done < 1
Run Code Online (Sandbox Code Playgroud)

谢谢!贝尔纳

bash shell grep

1
推荐指数
1
解决办法
3266
查看次数

解析简单表

对于输入文件中的每一行,我想打印字符串'locus_tag ='的字段,如果没有字段匹配,则打印短划线.

输入文件(制表符分隔):

GeneID_2=7277058    location=890211..892127 locus_tag=HAPS_0907 orientation=+
GeneID_2=7278144    gene=rlmL   location=complement(1992599..1994776)   locus_tag=HAPS_2029
GeneID_2=7278145    gene=rlmT   location=complement(1992599..1994776)   timetoparse
Run Code Online (Sandbox Code Playgroud)

期望的输出:

locus_tag=HAPS_0907
locus_tag=HAPS_2029
-
Run Code Online (Sandbox Code Playgroud)

尝试了这个但没有工作:

awk -F'\t' '{ for(i=1; i<=NF; i++) if($i ~/locus_tag=/) {print $i}; {for(i=1; i<=NF; i++) if($i !=/locus_tag=/) {print "-"}} }' SNP_annotations_ON_PROTEIN
Run Code Online (Sandbox Code Playgroud)

perl awk

0
推荐指数
1
解决办法
83
查看次数

如果字符串匹配,则仅打印'+'或' - '(两个文件)

如果找到或不找到字符串,我想只打印'+'o' - '符号.基本上,我有两个文件:

输入文件1(制表符分隔):

HPNK_00457
HPNK_00458
HPNK_00459
Run Code Online (Sandbox Code Playgroud)

输入文件2(制表符分隔):

HPNK_00457  AAA50325    1e-43   437 28  43  83  ATP-binding protein.
HPNK_00458  P25256  8e-43   429 28  43  82  RecName: Full=Tylosin resistance ATP-binding protein tlrC.
HPNK_00458  CAM96590    1e-42   429 27  42  87  ABC transporter ATP-binding protein [Streptomyces ambofaciens].
Run Code Online (Sandbox Code Playgroud)

期望的输出(制表符分隔,维护文件1中的字符串顺序):

HPNK_00457 +
HPNK_00458 +
HPNK_00459 -
Run Code Online (Sandbox Code Playgroud)

这是我一直在使用的,但需要更新:

while read vl; do grep "^$vl      " file2 || printf -- "- -\n" ; done < file1
Run Code Online (Sandbox Code Playgroud)

谢谢,试着每天在这里学习.

regex perl awk parsing

0
推荐指数
1
解决办法
113
查看次数

标签 统计

awk ×3

bash ×2

grep ×2

perl ×2

shell ×2

parsing ×1

regex ×1

text-mining ×1

web-scraping ×1

wget ×1