【发布时间】:2018-03-27 02:18:24
【问题描述】:
我的目标是阅读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-1001 APP-1002 APP-1004 APP-1004:XYZ 问题的错误修复
它只打印最新版本的文本,即 APP-1004。我在网上看到无法在嵌套循环中读取两个文件。
请提出一种不同的方法。
提前致谢。
【问题讨论】:
-
您在寻找
grep -f revisions.txt logs.txt吗? -
@WilliamPursell 这是一个简单的任务。一旦我得到这条线,我就会在第二个文件中做很多事情。
标签: linux bash shell unix scripting