为了账号安全,请及时绑定邮箱和手机立即绑定

在Bash中循环遍历文件的内容

在Bash中循环遍历文件的内容

四季花海 2019-06-11 20:43:54
在Bash中循环遍历文件的内容如何迭代文本文件的每一行巴什?使用此脚本:echo "Start!"for p in (peptides.txt)do     echo "${p}"done我在屏幕上看到这个输出:Start!./runPep.sh: line 3: syntax error near unexpected token `(' ./runPep.sh: line 3: `for p in (peptides.txt)'(稍后我想做一些更复杂的事情$p而不仅仅是输出到屏幕上。)环境变量壳IS(来自env):SHELL=/bin/bash/bin/bash --version产出:GNU bash, version 3.1.17(1)-release (x86_64-suse-linux-gnu)Copyright (C) 2005 Free Software Foundation, Inc.cat /proc/version产出:Linux version 2.6.18.2-34-default (geeko@buildhost) (gcc version 4.1.2 20061115 (prerelease) (SUSE Linux)) #1 SMP Mon Nov 27 11:46:27 UTC 2006txt文件包含:RKEKNVQ IPKKLLQK QYFHQLEKMNVK IPKKLLQK GDLSTALEVAIDCYEK QYFHQLEKMNVKIPENIYR RKEKNVQ VLAKHGKLQDAIN ILGFMK LEDVALQILL
查看完整描述

3 回答

?
白板的微信

TA贡献1883条经验 获得超3个赞

cat peptides.txt | while read linedo
   # do something with $line heredone


查看完整回答
反对 回复 2019-06-11
?
守着一只汪

TA贡献1872条经验 获得超3个赞

备选案文1a:When循环:一次单行:输入重定向

#!/bin/bashfilename='peptides.txt'echo Startwhile read p; do 
    echo $pdone < $filename

备选案文1b:When循环:一次一行:
打开文件,从文件描述符读取(在本例中为文件描述符#4)。

#!/bin/bashfilename='peptides.txt'exec 4<$filename
echo Startwhile read -u4 p ; do
    echo $pdone

备选案文2:for循环:将文件读入单变量并进行解析。
这个语法将基于标记之间的任何空白来解析“行”。这仍然有效,因为给定的输入文件行是单字标记。如果每行有多个令牌,则此方法将无法工作。此外,将完整文件读入单个变量对于大型文件来说也不是一个很好的策略。

#!/bin/bashfilename='peptides.txt'filelines=`cat $filename`echo Startfor line in $filelines ; do
    echo $linedone


查看完整回答
反对 回复 2019-06-11
  • 3 回答
  • 0 关注
  • 1609 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信