如何使用Bash遍历文本文件的每一行
使用此脚本:
回显“开始!”
对于p in(peptides.txt)
做
回显“${p}”
完成
我在屏幕上得到以下输出:
开始!
./runPep.sh:第3行:意外标记“(”附近的语法错误
./runPep.sh:第3行:`for p in(peptides.txt)'
(稍后我想用$p
做一些比只输出到屏幕更复杂的事情。)
环境变量SHELL为(来自env):
SHELL=/bin/bash
/bin/bash--version
输出:
GNUBash,版本3.1.17(1)-发布(x86_64-suse-linux-GNU)
版权所有(C)2005免费软件基金会。
cat/proc/version
输出:
Linux版本2.6.18.2-34-default([email protected])(gcc版本4.1.2 20061115(预发布)(SUSE Linux))#1 SMP周一11月27日11:46:27 UTC 2006
文件peptides.txt包含:
RKEKNVQ
IPKKLQK
QYFHQLEKMNVK
IPKKLQK
GDLSTALEVAIDCYEK
QYFHQLEKMNVKIPENIYR
RKEKNVQ
弗拉赫格克丹
ILGFMK
莱德瓦基尔
一种方法是:
阅读时执行
回声“$p”
done<;peptides.txt
正如评论中所指出的,这会产生一些副作用,如修剪前导空格、解释反斜杠序列,以及在缺少终止换行符时跳过最后一行。如果存在这些问题,您可以执行以下操作:
而IFS=”“read-r p | |[-n“$p”]
做
printf'%s\n'$p'
done<;peptides.txt
例外情况下,如果循环体可以从标准输入读取,则可以使用不同的文件描述符打开文件:
读取时-u 10 p;执行
...
完成10<;肽.txt
这里,10只是一个任意数(不同于0、1、2)