我有一个命令,列出了我们备份的所有文件夹的完整8级深度路径。 我还有一个命令,它枚举系统上的所有8级深层文件夹。 这两个都作为变量存储在bash脚本中。
我正在尝试获取一个循环,它接受文件1并将第一行条目用作if
/ then
/ else
中的变量,然后继续向前移动到文件的末尾。
我已经尝试了很多东西,但超出了我的技能范围,提供了一个不会混淆这篇文章的读者的例子。
TempFile1=/ifs/data/scripts/ConfigMonitor/TempFile1.txt
TempFile2=/ifs/data/scripts/ConfigMonitor/TempFile2.txt
find /ifs/*/*/backup -maxdepth 4 -mindepth 4 -type d > $TempFile1
isi snapshot schedules list -v | grep Path: | awk '{print $2}' > $TempFile2
list line 1 on $TempFile1
Grep for line 1 within $TempFile2
if result yielded then
echo found
else
echo fullpath not being backed up
fi
答案 0 :(得分:0)
这应该迭代Tempfile1.txt和grep for TempFile2.txt中的行。
while read line; do
if grep $line /path/to/TempFile2.txt > /dev/null
then
echo "Found $line"
else
echo "Did not find $line"
fi
done < Tempfile1.txt
Tempfile1.txt:
a
b
c
Tempfile2.txt
b
d
z
输出:
Did not find a
Found b
Did not find c
答案 1 :(得分:0)
grep(1)说:
-f FILE, --file=FILE
Obtain patterns from FILE, one per line. The empty file
contains zero patterns, and therefore matches nothing. (-f is
specified by POSIX.)
因此,以下内容应该有效:
grep -f patterns_to_match.txt file_to_examine.txt
另一种思考方式是你可以让GNU grep向你展示所有的比赛:
echo 'Lines that match a pattern in your pattern file.'
grep -f patterns_to_match.txt file_to_examine.txt
然后显示所有与任何模式都不匹配的行:
echo 'Lines that do not match any patterns in your pattern file.'
grep -f patterns_to_match.txt -v file_to_examine.txt
这可能比在Bash中一次循环一行文件更快更有效。使用GNU grep以外的grep可能会得到或不会得到类似的结果;虽然-f和-v标志由POSIX指定,但我只针对GNU grep 2.16进行了测试,因此您的里程可能会有所不同。