gpt4 book ai didi

linux - 如何在 Unix 中的嵌套循环中读取两个文件

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

我的目标是读取 revisions.txt 中存在的每个修订版,并从 logs.txt 文件中根据该修订版号提取文本。

例如 revisions.txt 文件有以下输入,

  • APP-1001
  • APP-1002
  • APP-1004

logs.txt 文件有以下输入,

  • APP-999:XYZ 问题的错误修复
  • APP-1001:XYZ 问题的错误修复
  • APP-1002:XYZ 问题的错误修复
  • APP-1003:XYZ 问题的错误修复
  • APP-1004:XYZ 问题的错误修复

我想获取 revisions.txt 文件中所有修订的所有行。我想出了以下代码,

#!/bin/bash
echo "Start!"
input=logs.txt
revision=revisions.txt

IFS=$'\n' read -d '' -r -a revs < $revision

for rev in "${revs[@]}"
do
echo $rev
while IFS='' read -r line || [[ -n "$line" ]]; do
regex='^'$rev'(.*)'
if [[ $line =~ $regex ]];
then
echo $line
fi
done < "$input"
done

输出截至目前,APP-1001APP-1002APP-1004APP-1004:XYZ 问题的错误修复

它只打印最新版本的文本,即 APP-1004。我在网上看到无法在嵌套循环中读取两个文件。

请建议一种不同的方法。

提前致谢。

最佳答案

您可以嵌套循环,因此您可以同时从两个文件进行迭代。

while read revisions_line
do
while read logs_line
do

echo "This line comes from revisions : $revisions_line"
echo "This line comes from logs : $logs_line"

done << "$( cat logs.txt)"
done << "$( cat revisions.txt)"

问候!

关于linux - 如何在 Unix 中的嵌套循环中读取两个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49496478/

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