gpt4 book ai didi

linux - 在 bash 中获取文件指针并任意读取行

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:58:28 24 4
gpt4 key购买 nike

我有一个 bash 脚本,我需要在其中逐行读取文件。我知道通常的 while read line 是如何工作的,但我的程序不能很好地适应 while 循环。我有两个文件,需要根据某些条件逐行比较它们(不是diff:条件是一个文件中的行是否以另一个文件中的行开头)。目前我有一个 Java 版本的程序,它有三个嵌套循环,两个文件的循环交织在一起,我需要打破嵌套循环(我知道该怎么做)。所以我想要一个优雅的解决方案来在 bash 中完成以下基本任务(以下代码是我的 Java 程序):

BufferedReader reader = new BufferedReader(new FileReader(inputFile)); // initialize a file pointer
reader.ready(); // whether the pointer is at the end of the file (used in while and if conditions)
lineStr = reader.readLine(); // read next line

我在网上找到的所有解决方案都使用规范的 while read line 结构,但我的程序无法适应它。所以我想以更多的控制来操作文件。

最佳答案

要在循环中逐行比较两个文件,您可以简单地这样做:

while read -u 4 A && read -u 5 B; do
<do something with $A and $B>
done 4< file1.txt 5< file2.txt

for (( ;; )); do
read -u 4 A || {
<read error/eof; perhaps you can send a message here and/or break the loop with break>
}
read -u 5 B || {
<do something similar>
}
<do something with $A and $B>
done 4< file1.txt 5< file2.txt

关于linux - 在 bash 中获取文件指针并任意读取行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24211503/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com